Skip to content

Commit 96cda39

Browse files
authored
添加生成 docker.io/phpswoole/swoole-cli 容器 脚本 (#913)
* 添加生成 docker.io/phpswoole/swoole-cli 容器 * build-swoole-cli-alpine-container.sh * build-swoole-cli-alpine-container.sh * update
1 parent 095f5e9 commit 96cda39

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
#!/usr/bin/env bash
2+
3+
set -exu
4+
__DIR__=$(
5+
cd "$(dirname "$0")"
6+
pwd
7+
)
8+
__PROJECT__=$(
9+
cd ${__DIR__}/../../
10+
pwd
11+
)
12+
13+
cd ${__DIR__}
14+
cd ${__PROJECT__}
15+
16+
test -d var/build-swoole-cli-container/ && rm -rf var/build-swoole-cli-container/
17+
mkdir -p var/build-swoole-cli-container/
18+
cd ${__PROJECT__}/var/build-swoole-cli-container/
19+
20+
cp -f ${__PROJECT__}/setup-swoole-cli-runtime.sh .
21+
22+
VERSION="6.0.0.0"
23+
bash setup-swoole-cli-runtime.sh --version v${VERSION}
24+
25+
cat >php.ini <<'EOF'
26+
curl.cainfo="/usr/local/swoole-cli/etc/cacert.pem"
27+
openssl.cafile="/usr/local/swoole-cli/etc/cacert.pem"
28+
swoole.use_shortname=off
29+
display_errors = On
30+
error_reporting = E_ALL
31+
32+
upload_max_filesize="128M"
33+
post_max_size="128M"
34+
memory_limit="1G"
35+
date.timezone="UTC"
36+
37+
opcache.enable=On
38+
opcache.enable_cli=On
39+
opcache.jit=1225
40+
opcache.jit_buffer_size=128M
41+
42+
; jit 更多配置参考 https://mp.weixin.qq.com/s/Tm-6XVGQSlz0vDENLB3ylA
43+
44+
expose_php=Off
45+
apc.enable_cli=1
46+
47+
EOF
48+
49+
cat >Dockerfile <<'EOF'
50+
FROM alpine:3.20
51+
52+
ENV TZ=Etc/UTC
53+
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
54+
55+
RUN mkdir -p /usr/local/swoole-cli/etc/conf.d/
56+
ADD ./bin/runtime/swoole-cli /usr/local/bin/
57+
ADD ./bin/runtime/composer /usr/local/bin/
58+
ADD ./bin/runtime/cacert.pem /usr/local/swoole-cli/etc/
59+
ADD ./php.ini /usr/local/swoole-cli/etc/
60+
61+
RUN chmod a+x /usr/local/bin/swoole-cli
62+
RUN chmod a+x /usr/local/bin/composer
63+
RUN ln -sf /usr/local/bin/swoole-cli /usr/local/bin/php
64+
65+
ARG MIRROR=""
66+
RUN test -f /etc/apk/repositories.save || cp /etc/apk/repositories /etc/apk/repositories.save
67+
RUN if [ "${MIRROR}" = "ustc" -o "${MIRROR}" = "china" ]; then { sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ; } fi
68+
RUN if [ "${MIRROR}" = "tuna" ]; then { sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories ; } fi
69+
70+
RUN apk add ca-certificates tini bash
71+
72+
RUN mkdir /work
73+
WORKDIR /work
74+
ENTRYPOINT ["tini", "--"]
75+
76+
EOF
77+
78+
PLATFORM=''
79+
ARCH=$(uname -m)
80+
case $ARCH in
81+
'x86_64')
82+
PLATFORM='linux/amd64'
83+
;;
84+
'aarch64')
85+
PLATFORM='linux/arm64'
86+
;;
87+
esac
88+
89+
while [ $# -gt 0 ]; do
90+
case "$1" in
91+
--platform)
92+
PLATFORM="$2"
93+
;;
94+
--*)
95+
echo "Illegal option $1"
96+
;;
97+
esac
98+
shift $(($# > 0 ? 1 : 0))
99+
done
100+
101+
TIME=$(date -u '+%Y%m%dT%H%M%SZ')
102+
ARCH=$(uname -m)
103+
104+
TAG="alpine-3.20-v${VERSION}-${ARCH}-${TIME}"
105+
TAG=${VERSION}
106+
IMAGE="docker.io/phpswoole/swoole-cli:${TAG}"
107+
108+
#MIRROR='china'
109+
MIRROR=''
110+
docker buildx build -t ${IMAGE} -f ./Dockerfile . --platform ${PLATFORM} --build-arg="MIRROR=${MIRROR}"
111+
112+
echo ${IMAGE}
113+
114+
# docker save -o "swoole-cli-image.tar" ${IMAGE}
115+
: <<'EOF'
116+
{
117+
docker push ${IMAGE}
118+
} || {
119+
echo $?
120+
}
121+
EOF
122+
123+
docker run --rm --name demo ${IMAGE} swoole-cli -v
124+
docker run --rm --name demo ${IMAGE} swoole-cli -m
125+
docker run --rm --name demo ${IMAGE} swoole-cli -c /usr/local/swoole-cli/etc/php.ini --ri curl
126+
docker run --rm --name demo ${IMAGE} swoole-cli -c /usr/local/swoole-cli/etc/php.ini --ri openssl
127+
docker run --rm --name demo ${IMAGE} swoole-cli --ri swoole

0 commit comments

Comments
 (0)