Skip to content

Commit

Permalink
Merge pull request #917 from jingjingxyk/experiment-feature
Browse files Browse the repository at this point in the history
Experiment feature
  • Loading branch information
jingjingxyk authored Jan 27, 2025
2 parents 3295688 + 3804a1b commit f9b6d34
Show file tree
Hide file tree
Showing 18 changed files with 190 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/linux-x86_64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ jobs:
export PATH=/usr/libexec/docker/cli-plugins/:$PATH
docker-compose version
docker container ls -a
bash sapi/src/UnitTest/scripts/database/start.sh
bash sapi/docker/database/start.sh
- name: Show Build Result
run: |
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,26 @@ bash setup-php-runtime.sh
# 来自 https://www.swoole.com/download
bash setup-php-runtime.sh --mirror china

# 使用swoole-cli
# shell脚本中启用别名扩展功能‌
shopt -s expand_aliases
__DIR__=$(pwd)
export PATH="${__DIR__}/bin/runtime:$PATH"
ln -sf ${__DIR__}/bin/runtime/swoole-cli ${__DIR__}/bin/runtime/php
alias php="php -d curl.cainfo=${__DIR__}/bin/runtime/cacert.pem -d openssl.cafile=${__DIR__}/bin/runtime/cacert.pem"
which php
php -v

```

## 生成构建脚本

```shell

composer install
php prepare.php
php prepare.php +inotify +mongodb -mysqli

```

* 脚本会自动下载相关的`C/C++`库以及`PECL`扩展
Expand Down
5 changes: 4 additions & 1 deletion build-release-example.sh
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ if [ ! -f "${__PROJECT__}/bin/runtime/php" ]; then
fi

export PATH="${__PROJECT__}/bin/runtime:$PATH"
# 交互模式下alias 扩展默认是开启的,脚本模式下默认是关闭的
# 在shell脚本中启用别名扩展功能‌
shopt -s expand_aliases
alias php="php -d curl.cainfo=${__PROJECT__}/bin/runtime/cacert.pem -d openssl.cafile=${__PROJECT__}/bin/runtime/cacert.pem"

php -v
Expand Down Expand Up @@ -219,7 +222,7 @@ if [ ${IN_DOCKER} -eq 1 ]; then
{
# 容器中

php prepare.php +inotify ${OPTIONS}
php prepare.php ${OPTIONS}

}
else
Expand Down
2 changes: 1 addition & 1 deletion sapi/docker/build-export-container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ done

case "$MIRROR" in
china | openatom)
CONTAINER_BASE_IMAGE="hub.atomgit.com/library/alpine:3.18"
CONTAINER_BASE_IMAGE="docker.io/library/alpine:3.18"
;;
esac

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: "3"
services:
postgresql-server:
image: postgres:16-alpine
image: postgres:17-alpine
# image: postgis/postgis:16-3.4-alpine
hostname: "postgresql"
container_name: "postgresql"
Expand Down
27 changes: 27 additions & 0 deletions sapi/docker/database/my.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

[mysqld]
skip_ssl
skip-ssl-session-cache-mode

# bind-address = 0.0.0.0
bind-address = 0.0.0.0
# bind-address = ::

# 跳过密码登录
# skip-grant-tables

collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
character-set-server = utf8mb4
innodb_ft_min_token_size = 1
ft_min_word_len = 1
innodb_ft_enable_stopword = OFF
ft_stopword_file = ''



File renamed without changes.
File renamed without changes.
5 changes: 3 additions & 2 deletions sapi/quickstart/linux/install-docker-compose.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,15 @@ if [ ! -f /usr/libexec/docker/cli-plugins/docker-compose ]; then

# show more version info
# https://github.com/docker/compose/releases
VERSION="v2.32.1"
VERSION="v2.32.4"

curl -fsSL "https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

else
export PATH=/usr/libexec/docker/cli-plugins/:$PATH
# export PATH=/usr/libexec/docker/cli-plugins/:$PATH
ln -sf /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
fi

docker-compose --version
2 changes: 1 addition & 1 deletion sapi/quickstart/linux/run-alpine-container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ while [ $# -gt 0 ]; do
MIRROR="$2"
case "$MIRROR" in
china | openatom)
IMAGE="hub.atomgit.com/library/alpine:3.18"
IMAGE="docker.io/library/alpine:3.18"
;;
esac
;;
Expand Down
2 changes: 1 addition & 1 deletion sapi/quickstart/linux/run-debian-container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ while [ $# -gt 0 ]; do
MIRROR="$2"
case "$MIRROR" in
china | openatom)
IMAGE="hub.atomgit.com/library/debian:12"
IMAGE="docker.io/library/debian:12"
;;
esac
;;
Expand Down
127 changes: 127 additions & 0 deletions sapi/scripts/build-swoole-cli-alpine-container.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#!/usr/bin/env bash

set -exu
__DIR__=$(
cd "$(dirname "$0")"
pwd
)
__PROJECT__=$(
cd ${__DIR__}/../../
pwd
)

cd ${__DIR__}
cd ${__PROJECT__}

test -d var/build-swoole-cli-container/ && rm -rf var/build-swoole-cli-container/
mkdir -p var/build-swoole-cli-container/
cd ${__PROJECT__}/var/build-swoole-cli-container/

cp -f ${__PROJECT__}/setup-swoole-cli-runtime.sh .

VERSION="6.0.0.0"
bash setup-swoole-cli-runtime.sh --version v${VERSION}

cat >php.ini <<'EOF'
curl.cainfo="/usr/local/swoole-cli/etc/cacert.pem"
openssl.cafile="/usr/local/swoole-cli/etc/cacert.pem"
swoole.use_shortname=off
display_errors = On
error_reporting = E_ALL
upload_max_filesize="128M"
post_max_size="128M"
memory_limit="1G"
date.timezone="UTC"
opcache.enable=On
opcache.enable_cli=On
opcache.jit=1225
opcache.jit_buffer_size=128M
; jit 更多配置参考 https://mp.weixin.qq.com/s/Tm-6XVGQSlz0vDENLB3ylA
expose_php=Off
apc.enable_cli=1
EOF

cat >Dockerfile <<'EOF'
FROM alpine:3.20
ENV TZ=Etc/UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /usr/local/swoole-cli/etc/conf.d/
ADD ./bin/runtime/swoole-cli /usr/local/bin/
ADD ./bin/runtime/composer /usr/local/bin/
ADD ./bin/runtime/cacert.pem /usr/local/swoole-cli/etc/
ADD ./php.ini /usr/local/swoole-cli/etc/
RUN chmod a+x /usr/local/bin/swoole-cli
RUN chmod a+x /usr/local/bin/composer
RUN ln -sf /usr/local/bin/swoole-cli /usr/local/bin/php
ARG MIRROR=""
RUN test -f /etc/apk/repositories.save || cp /etc/apk/repositories /etc/apk/repositories.save
RUN if [ "${MIRROR}" = "ustc" -o "${MIRROR}" = "china" ]; then { sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ; } fi
RUN if [ "${MIRROR}" = "tuna" ]; then { sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories ; } fi
RUN apk add ca-certificates tini bash
RUN mkdir /work
WORKDIR /work
ENTRYPOINT ["tini", "--"]
EOF

PLATFORM=''
ARCH=$(uname -m)
case $ARCH in
'x86_64')
PLATFORM='linux/amd64'
;;
'aarch64')
PLATFORM='linux/arm64'
;;
esac

while [ $# -gt 0 ]; do
case "$1" in
--platform)
PLATFORM="$2"
;;
--*)
echo "Illegal option $1"
;;
esac
shift $(($# > 0 ? 1 : 0))
done

TIME=$(date -u '+%Y%m%dT%H%M%SZ')
ARCH=$(uname -m)

TAG="alpine-3.20-v${VERSION}-${ARCH}-${TIME}"
TAG=${VERSION}
IMAGE="docker.io/phpswoole/swoole-cli:${TAG}"

#MIRROR='china'
MIRROR=''
docker buildx build -t ${IMAGE} -f ./Dockerfile . --platform ${PLATFORM} --build-arg="MIRROR=${MIRROR}"

echo ${IMAGE}

# docker save -o "swoole-cli-image.tar" ${IMAGE}
: <<'EOF'
{
docker push ${IMAGE}
} || {
echo $?
}
EOF

docker run --rm --name demo ${IMAGE} swoole-cli -v
docker run --rm --name demo ${IMAGE} swoole-cli -m
docker run --rm --name demo ${IMAGE} swoole-cli -c /usr/local/swoole-cli/etc/php.ini --ri curl
docker run --rm --name demo ${IMAGE} swoole-cli -c /usr/local/swoole-cli/etc/php.ini --ri openssl
docker run --rm --name demo ${IMAGE} swoole-cli --ri swoole
2 changes: 1 addition & 1 deletion sapi/scripts/cygwin/cygwin-config-ext.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ fi
mkdir -p ${WORK_TEMP_DIR}/ext/redis/
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/redis/ -xf redis-${REDIS_VERSION}.tgz

: <<EOF
: <<'EOF'
# mongodb 扩展 不支持 cygwin 环境下构建
# 详见: https://github.com/mongodb/mongo-php-driver/issues/1381
Expand Down
8 changes: 3 additions & 5 deletions sapi/scripts/cygwin/install-re2c.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,20 @@ __PROJECT__=$(
pwd
)
cd ${__PROJECT__}
ROOT=${__PROJECT__}


RE2C_VERSION=3.0

wget https://github.com/swoole/swoole-cli/releases/download/v5.0.1/re2c.exe
curl -fSLo re2c.exe https://github.com/swoole/swoole-cli/releases/download/v5.0.1/re2c.exe
mv ./re2c.exe /usr/bin/re2c
chmod +x /usr/bin/re2c
re2c -v

build_re2c() {
cd /tmp
wget https://github.com/skvadrik/re2c/releases/download/3.0/re2c-3.0.tar.xz
curl -fSLo re2c-${RE2C_VERSION}.tar.xz https://github.com/skvadrik/re2c/releases/download/3.0/re2c-3.0.tar.xz
tar xvf re2c-${RE2C_VERSION}.tar.xz
cd re2c-${RE2C_VERSION}
autoreconf -i -W all
./configure --prefix=/usr && make -j $(nproc) && make install
cd $ROOT
cd ${__PROJECT__}
}
8 changes: 0 additions & 8 deletions sapi/src/UnitTest/scripts/database/my.cnf

This file was deleted.

5 changes: 3 additions & 2 deletions sapi/src/template/make.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

?>
#!/usr/bin/env bash
shopt -s expand_aliases
__PROJECT_DIR__=$(cd "$(dirname "$0")"; pwd)
CLI_BUILD_TYPE=<?= $this->getBuildType() . PHP_EOL ?>
SRC=<?= $this->phpSrcDir . PHP_EOL ?>
Expand Down Expand Up @@ -415,8 +416,8 @@
if [ -n "$2" ]; then
MIRROR=$2
case "$MIRROR" in
china | openatom )
CONTAINER_BASE_IMAGE="hub.atomgit.com/library/alpine:3.18"
china | openatom)
CONTAINER_BASE_IMAGE="docker.io/library/alpine:3.18"
;;
esac
fi
Expand Down
4 changes: 3 additions & 1 deletion setup-php-runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -156,10 +156,12 @@ cd ${__PROJECT__}/
set +x

echo " "
echo " USE PHP RUNTIME :"
echo " USE PHP RUNTIME : "
echo " "
echo " export PATH=\"${__PROJECT__}/bin/runtime:\$PATH\" "
echo " "
echo " shopt -s expand_aliases "
echo " "
echo " alias php='php -d curl.cainfo=${__PROJECT__}/bin/runtime/cacert.pem -d openssl.cafile=${__PROJECT__}/bin/runtime/cacert.pem' "
echo " OR "
echo " alias php='php -c ${__PROJECT__}/bin/runtime/php.ini' "
Expand Down
2 changes: 2 additions & 0 deletions setup-swoole-cli-runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ echo " USE PHP-CLI RUNTIME :"
echo " "
echo " export PATH=\"${__PROJECT__}/bin/runtime:\$PATH\" "
echo " "
echo " shopt -s expand_aliases "
echo " "
echo " alias swoole-cli='swoole-cli -d curl.cainfo=${__PROJECT__}/bin/runtime/cacert.pem -d openssl.cafile=${__PROJECT__}/bin/runtime/cacert.pem' "
echo " OR "
echo " alias swoole-cli='swoole-cli -c ${__PROJECT__}/bin/runtime/php.ini' "
Expand Down

0 comments on commit f9b6d34

Please sign in to comment.