mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 04:44:53 +08:00
update Dockerfile
This commit is contained in:
parent
89a1526501
commit
908f7c8b98
@ -1,45 +1,64 @@
|
||||
from alpine:latest
|
||||
|
||||
# define script basic information
|
||||
# Version of this Dockerfile
|
||||
ENV SCRIPT_VERSION=1.3.0
|
||||
# Download address uses backup address
|
||||
# (if downloading slowly, consider set it to yes)
|
||||
ENV USE_BACKUP=no
|
||||
ENV HOME_DIR=/
|
||||
ENV SOURCE_DIR=/source
|
||||
ENV SOFT_DIR=/usr
|
||||
|
||||
# Version of some manually-installed package
|
||||
ENV VER_PHP=7.4.19
|
||||
ENV VER_SWOOLE=4.6.7
|
||||
ENV VER_HASH=1.5
|
||||
ENV VER_INOTIFY=3.0.0
|
||||
ENV VER_REDIS=5.3.4
|
||||
ENV VER_LIBXML2=2.9.10
|
||||
ENV VER_LIBXML2=2.9.12
|
||||
ENV VER_CURL=7.77.0
|
||||
ENV VER_LIBLZMA=master
|
||||
ENV VER_LIBZIP=1
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
# LINK_OF_ADDRESS_ORIGIN
|
||||
ENV LINK_APK_REPO='mirrors.ustc.edu.cn'
|
||||
ENV LINK_APK_REPO_BAK='dl-cdn.alpinelinux.org'
|
||||
|
||||
# 编译必需的
|
||||
RUN apk add cmake gcc g++ autoconf git libstdc++ linux-headers make m4 libgcc binutils ncurses
|
||||
# php的zlib支持
|
||||
RUN if [ "${USE_BACKUP}" = "yes" ]; then \
|
||||
echo "Using backup address..." && sleep 3s; \
|
||||
else \
|
||||
echo "Using original address..." && sleep 3s; \
|
||||
fi
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/'${LINK_APK_REPO}'/g' /etc/apk/repositories
|
||||
|
||||
# build requirements
|
||||
RUN apk add cmake gcc g++ jq autoconf git libstdc++ linux-headers make m4 libgcc binutils ncurses
|
||||
# php zlib dependencies
|
||||
RUN apk add zlib-dev zlib-static
|
||||
# php的mbstring支持
|
||||
# php mbstring dependencies
|
||||
RUN apk add oniguruma-dev
|
||||
# php的openssl支持
|
||||
# php openssl dependencies
|
||||
RUN apk add openssl-libs-static openssl-dev openssl
|
||||
# php的gd支持,如果不需要gd则去掉--enable-gd和下面的依赖
|
||||
# php gd dependencies
|
||||
RUN apk add libpng-dev libpng-static
|
||||
# curl的c-ares支持,如果不需要curl则去掉
|
||||
# curl c-ares dependencies
|
||||
RUN apk add c-ares-static c-ares-dev
|
||||
|
||||
RUN mkdir /app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY ac_override_1 /tmp/
|
||||
COPY ac_override_2 /tmp/
|
||||
COPY php-arg.sh /tmp/
|
||||
COPY download.sh /app/
|
||||
COPY compile-php.sh /app/
|
||||
|
||||
RUN mkdir downloads && mkdir source && cd downloads
|
||||
RUN chmod +x /app/download.sh && \
|
||||
chmod +x /app/compile-php.sh
|
||||
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
RUN ./download.sh hash ${USE_BACKUP} ${VER_HASH}
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
RUN ./download.sh swoole ${USE_BACKUP} ${VER_SWOOLE}
|
||||
|
||||
RUN wget "http://mirrors.zhamao.xin/php/php-${VER_PHP}.tar.gz" -O php.tar.gz
|
||||
RUN wget "http://mirrors.zhamao.xin/pecl/swoole-${VER_SWOOLE}.tgz" -O swoole.tar.gz
|
||||
@ -63,13 +82,13 @@ RUN cd liblzma && \
|
||||
./configure && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
echo "编译 liblzma 完成!"
|
||||
echo "liblzma compiled!"
|
||||
|
||||
RUN cd "libxml2-${VER_LIBXML2}" && \
|
||||
./configure --with-lzma --without-python && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
echo "编译 libxml2 完成!"
|
||||
echo "libxml2 compiled!"
|
||||
|
||||
RUN cd "curl-${VER_CURL}" && \
|
||||
CC=gcc CXX=g++ CFLAGS=-fPIC CPPFLAGS=-fPIC ./configure \
|
||||
@ -85,32 +104,34 @@ RUN cd "curl-${VER_CURL}" && \
|
||||
--enable-ares && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
echo "编译 curl 完成!"
|
||||
echo "curl compiled!"
|
||||
|
||||
COPY ac_override_1 /
|
||||
COPY ac_override_2 /
|
||||
COPY compile-php.sh /app/
|
||||
|
||||
RUN apk add bash
|
||||
|
||||
# copy
|
||||
RUN mv "swoole-${VER_SWOOLE}" "php-${VER_PHP}/ext/swoole" && \
|
||||
mv "redis-${VER_REDIS}" "php-${VER_PHP}/ext/redis" && \
|
||||
mv "inotify-${VER_INOTIFY}" "php-${VER_PHP}/ext/inotify"
|
||||
|
||||
COPY merge-curl-config.sh /tmp/
|
||||
RUN cat /ac_override_1 /app/php-${VER_PHP}/ext/curl/config.m4 /ac_override_2 > /app/aa
|
||||
RUN mv /app/aa /app/php-${VER_PHP}/ext/curl/config.m4
|
||||
|
||||
RUN chmod +x /tmp/php-arg.sh && \
|
||||
chmod +x /tmp/merge-curl-config.sh
|
||||
|
||||
RUN "php-${VER_PHP}/ext/swoole/clear.sh" && \
|
||||
cd "php-${VER_PHP}" && \
|
||||
"/tmp/merge-curl-config.sh" && \
|
||||
mv "/app/aa" "ext/curl/config.m4" && \
|
||||
RUN cd "php-${VER_PHP}/ext/swoole/" && \
|
||||
./clear.sh && \
|
||||
cd ../../ && \
|
||||
./buildconf --force
|
||||
|
||||
RUN cd "php-${VER_PHP}" && \
|
||||
chmod +x /tmp/php-arg.sh && \
|
||||
echo "Using "$(/tmp/php-arg.sh ${VER_PHP}) && sleep 5s && \
|
||||
./configure LDFLAGS=-static $(/tmp/php-arg.sh ${VER_PHP})
|
||||
RUN ./compile-php.sh ${VER_PHP}
|
||||
|
||||
RUN cd "php-${VER_PHP}" && \
|
||||
sed -ie 's/-export-dynamic//g' "Makefile" && \
|
||||
sed -ie 's/-o \$(SAPI_CLI_PATH)/-all-static -o \$(SAPI_CLI_PATH)/g' "Makefile" && \
|
||||
sed -ie 's/swoole_clock_gettime(CLOCK_REALTIME/clock_gettime(CLOCK_REALTIME/g' "ext/swoole/include/swoole.h" && \
|
||||
make LDFLAGS=-ldl -j4 && \
|
||||
make install
|
||||
make install && \
|
||||
strip
|
||||
|
||||
|
||||
87
docker/compile-php.sh
Normal file
87
docker/compile-php.sh
Normal file
@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
|
||||
VER_PHP="$1"
|
||||
|
||||
function php_compile_args() {
|
||||
_php_arg="--prefix=/app/php-dist"
|
||||
_php_arg="$_php_arg --disable-all"
|
||||
_php_arg="$_php_arg --enable-shared=no"
|
||||
_php_arg="$_php_arg --enable-static=yes"
|
||||
_php_arg="$_php_arg --enable-inline-optimization"
|
||||
_php_arg="$_php_arg --with-layout=GNU"
|
||||
_php_arg="$_php_arg --enable-calendar"
|
||||
_php_arg="$_php_arg --enable-ctype"
|
||||
_php_arg="$_php_arg --enable-filter"
|
||||
_php_arg="$_php_arg --enable-openssl"
|
||||
_php_arg="$_php_arg --enable-bcmath"
|
||||
_php_arg="$_php_arg --enable-pcntl"
|
||||
_php_arg="$_php_arg --enable-openssl"
|
||||
_php_arg="$_php_arg --with-openssl"
|
||||
_php_arg="$_php_arg --with-iconv"
|
||||
_php_arg="$_php_arg --enable-mbstring"
|
||||
_php_arg="$_php_arg --enable-phar"
|
||||
_php_arg="$_php_arg --enable-pdo"
|
||||
_php_arg="$_php_arg --with-pdo-mysql=mysqlnd"
|
||||
_php_arg="$_php_arg --enable-sockets"
|
||||
_php_arg="$_php_arg --enable-swoole"
|
||||
_php_arg="$_php_arg --enable-inotify"
|
||||
_php_arg="$_php_arg --enable-redis"
|
||||
_php_arg="$_php_arg --disable-redis-session"
|
||||
_php_arg="$_php_arg --enable-simplexml"
|
||||
_php_arg="$_php_arg --enable-dom"
|
||||
_php_arg="$_php_arg --enable-xml"
|
||||
_php_arg="$_php_arg --enable-xmlwriter"
|
||||
_php_arg="$_php_arg --enable-xmlreader"
|
||||
_php_arg="$_php_arg --with-zlib"
|
||||
_php_arg="$_php_arg --enable-posix"
|
||||
_php_arg="$_php_arg --enable-mysqlnd"
|
||||
_php_arg="$_php_arg --enable-tokenizer"
|
||||
_php_arg="$_php_arg --with-curl"
|
||||
_php_arg="$_php_arg --with-pear=no"
|
||||
_php_arg="$_php_arg --disable-cgi"
|
||||
_php_arg="$_php_arg --disable-phpdbg"
|
||||
|
||||
for loop in $(cat extension.txt)
|
||||
do
|
||||
case $loop in
|
||||
swoole)
|
||||
esac
|
||||
done
|
||||
|
||||
case $1 in
|
||||
7.3.*|7.2.*)
|
||||
_php_arg="$_php_arg --with-gd"
|
||||
_php_arg="$_php_arg --enable-libxml"
|
||||
_php_arg="$_php_arg --enable-hash"
|
||||
_php_arg="$_php_arg --enable-json"
|
||||
;;
|
||||
7.4.*)
|
||||
_php_arg="$_php_arg --enable-gd"
|
||||
_php_arg="$_php_arg --with-libxml"
|
||||
_php_arg="$_php_arg --enable-json"
|
||||
;;
|
||||
8.*)
|
||||
_php_arg="$_php_arg --enable-gd"
|
||||
_php_arg="$_php_arg --with-libxml"
|
||||
;;
|
||||
esac
|
||||
echo $_php_arg
|
||||
}
|
||||
|
||||
function before_configure() {
|
||||
for loop in $(cat extension.txt)
|
||||
do
|
||||
case $loop in
|
||||
swoole)
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
cd php-$VER_PHP && \
|
||||
before_configure && \
|
||||
./buildconf --force && \
|
||||
./configure LDFLAGS=-static $(php_compile_args $VER_PHP) && \
|
||||
after_configure && \
|
||||
sed -ie 's/-export-dynamic//g' "Makefile" && \
|
||||
sed -ie 's/-o $(SAPI_CLI_PATH)/-all-static -o $(SAPI_CLI_PATH)/g' "Makefile" && \
|
||||
if [ "$(cat extension.txt | grep swoole)" != "" ]; then sed -ie 's/swoole_clock_gettime(CLOCK_REALTIME/clock_gettime(CLOCK_REALTIME/g' "ext/swoole/include/swoole.h" && \
|
||||
3
docker/config.json
Normal file
3
docker/config.json
Normal file
@ -0,0 +1,3 @@
|
||||
swoole
|
||||
redis
|
||||
hello
|
||||
109
docker/download.sh
Normal file
109
docker/download.sh
Normal file
@ -0,0 +1,109 @@
|
||||
#!/bin/sh
|
||||
|
||||
_use_backup="$2"
|
||||
|
||||
function download_file() {
|
||||
downloader="wget"
|
||||
type wget >/dev/null 2>&1 || { downloader="curl"; }
|
||||
if [ "$downloader" = "wget" ]; then
|
||||
_down_prefix="O"
|
||||
else
|
||||
_down_prefix="o"
|
||||
fi
|
||||
_down_symbol=0
|
||||
if [ ! -f "$2" ]; then
|
||||
$downloader "$1" -$_down_prefix "$2" >/dev/null 2>&1 && \
|
||||
echo "$1 完成! $2" && _down_symbol=1
|
||||
else
|
||||
echo "$2 已存在!" && _down_symbol=1
|
||||
fi
|
||||
if [ $_down_symbol == 0 ]; then
|
||||
echo "下载 $1 失败!请检查网络连接!"
|
||||
rm -rf "$2"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
function lib_download_link() {
|
||||
if [ "$_use_backup" = "yes" ]; then
|
||||
case $1 in
|
||||
"php") echo "https://www.php.net/distributions/php-$2.tar.gz" ;;
|
||||
"swoole") echo "https://pecl.php.net/get/swoole-$2.tgz" ;;
|
||||
"hash") echo "https://pecl.php.net/get/hash-$2.tgz" ;;
|
||||
"inotify") echo "https://pecl.php.net/get/inotify-$2.tgz" ;;
|
||||
"redis") echo "https://pecl.php.net/get/redis-$2.tgz" ;;
|
||||
"libxml2") echo "http://xmlsoft.org/sources/libxml2-$2.tar.gz" ;;
|
||||
"liblzma") echo "https://github.com/kobolabs/liblzma/archive/refs/heads/master.zip" ;;
|
||||
"curl") echo "https://curl.haxx.se/download/curl-$2.tar.gz" ;;
|
||||
*) echo "unknown" ;;
|
||||
esac
|
||||
else
|
||||
case $1 in
|
||||
"php") echo "http://mirrors.zhamao.xin/php/php-$2.tar.gz" ;;
|
||||
"swoole") echo "http://mirrors.zhamao.xin/pecl/swoole-$2.tgz" ;;
|
||||
"hash") echo "http://mirrors.zhamao.xin/pecl/hash-$2.tgz" ;;
|
||||
"inotify") echo "http://mirrors.zhamao.xin/pecl/inotify-$2.tgz" ;;
|
||||
"redis") echo "http://mirrors.zhamao.xin/pecl/redis-$2.tgz" ;;
|
||||
"libxml2") echo "https://dl.zhamao.me/libxml2/libxml2-$2.tar.gz" ;;
|
||||
"liblzma") echo "https://dl.zhamao.me/liblzma/liblzma.tar.gz" ;;
|
||||
"curl") echo "https://dl.zhamao.me/curl/curl-$2.tar.gz" ;;
|
||||
*) echo "unknown" ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
function lib_x_cmd() {
|
||||
case $1 in
|
||||
"php"|"swoole"|"hash"|"inotify"|"redis"|"libxml2"|"curl")
|
||||
_x_cmd="tar"
|
||||
;;
|
||||
"liblzma") if [ "$_use_backup" = "yes" ]; then _x_cmd="unzip"; else _x_cmd="tar"; fi ;;
|
||||
*) _x_cmd="unknown" ;;
|
||||
esac
|
||||
case $2 in
|
||||
"cmd")
|
||||
echo $_x_cmd
|
||||
;;
|
||||
"file-prefix")
|
||||
case $_x_cmd in
|
||||
"tar") echo "-zxvf" ;;
|
||||
"unzip") echo "" ;;
|
||||
esac
|
||||
;;
|
||||
"out-prefix")
|
||||
case $_x_cmd in
|
||||
"tar") echo "-C" ;;
|
||||
"unzip") echo "-d" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function lib_x() {
|
||||
$(lib_x_cmd $1 cmd) $(lib_x_cmd $1 file-prefix) "$_source_dir/$(lib_x_dirname $1 file)" $(lib_x_cmd $1 out-prefix) "$_source_dir/"
|
||||
}
|
||||
|
||||
# 获取解压后的源码根目录
|
||||
function lib_x_dirname() {
|
||||
case $1 in
|
||||
"php"|"swoole"|"hash"|"inotify"|"redis"|"libxml2"|"curl")
|
||||
if [ "$2" = "file" ]; then _name_prefix=".tar.gz"; else _name_prefix=""; fi
|
||||
echo "$1-$(lib_ver $1)$_name_prefix"
|
||||
;;
|
||||
"liblzma")
|
||||
if [ "$_use_backup" = "yes" ]; then
|
||||
if [ "$2" = "file" ]; then _name_prefix=".zip"; else _name_prefix=""; fi
|
||||
echo "$1-$(lib_ver $1)$_name_prefix"
|
||||
else
|
||||
if [ "$2" = "file" ]; then _name_prefix=".tar.gz"; else _name_prefix=""; fi
|
||||
echo "$1""$_name_prefix"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "unknown"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
download_file $(lib_download_link $1 $3) $(lib_x_firname $1 file)
|
||||
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
cat /tmp/ac_override_1 ext/curl/config.m4 /tmp/ac_override_2 > /app/aa
|
||||
@ -1,52 +0,0 @@
|
||||
_php_arg="--prefix=/app/php-dist"
|
||||
_php_arg="$_php_arg --disable-all"
|
||||
_php_arg="$_php_arg --enable-shared=no"
|
||||
_php_arg="$_php_arg --enable-static=yes"
|
||||
_php_arg="$_php_arg --enable-inline-optimization"
|
||||
_php_arg="$_php_arg --with-layout=GNU"
|
||||
_php_arg="$_php_arg --enable-calendar"
|
||||
_php_arg="$_php_arg --enable-ctype"
|
||||
_php_arg="$_php_arg --enable-filter"
|
||||
_php_arg="$_php_arg --enable-openssl"
|
||||
_php_arg="$_php_arg --enable-bcmath"
|
||||
_php_arg="$_php_arg --with-openssl-dir=/usr"
|
||||
_php_arg="$_php_arg --enable-pcntl"
|
||||
_php_arg="$_php_arg --enable-openssl"
|
||||
_php_arg="$_php_arg --with-openssl"
|
||||
_php_arg="$_php_arg --with-iconv"
|
||||
_php_arg="$_php_arg --enable-json"
|
||||
_php_arg="$_php_arg --enable-mbstring"
|
||||
_php_arg="$_php_arg --enable-phar"
|
||||
_php_arg="$_php_arg --enable-pdo"
|
||||
_php_arg="$_php_arg --with-pdo-mysql=mysqlnd"
|
||||
_php_arg="$_php_arg --enable-sockets"
|
||||
_php_arg="$_php_arg --enable-swoole"
|
||||
_php_arg="$_php_arg --enable-inotify"
|
||||
_php_arg="$_php_arg --enable-redis"
|
||||
_php_arg="$_php_arg --disable-redis-session"
|
||||
_php_arg="$_php_arg --enable-simplexml"
|
||||
_php_arg="$_php_arg --enable-dom"
|
||||
_php_arg="$_php_arg --enable-xml"
|
||||
_php_arg="$_php_arg --enable-xmlwriter"
|
||||
_php_arg="$_php_arg --enable-xmlreader"
|
||||
_php_arg="$_php_arg --with-zlib"
|
||||
_php_arg="$_php_arg --enable-posix"
|
||||
_php_arg="$_php_arg --enable-mysqlnd"
|
||||
_php_arg="$_php_arg --enable-tokenizer"
|
||||
_php_arg="$_php_arg --with-curl"
|
||||
_php_arg="$_php_arg --with-pear=no"
|
||||
_php_arg="$_php_arg --disable-cgi"
|
||||
_php_arg="$_php_arg --disable-phpdbg"
|
||||
|
||||
case $1 in
|
||||
7.3.*|7.2.*)
|
||||
_php_arg="$_php_arg --with-gd"
|
||||
_php_arg="$_php_arg --enable-libxml"
|
||||
_php_arg="$_php_arg --enable-hash"
|
||||
;;
|
||||
*)
|
||||
_php_arg="$_php_arg --enable-gd"
|
||||
_php_arg="$_php_arg --with-libxml"
|
||||
;;
|
||||
esac
|
||||
echo $_php_arg
|
||||
Loading…
x
Reference in New Issue
Block a user