From cc3aa2ec44e454154c3ca6cc579468c2cd07d21f Mon Sep 17 00:00:00 2001 From: Whale Date: Wed, 2 Jun 2021 00:33:47 +0800 Subject: [PATCH] Create Dockerfile --- docker/Dockerfile | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 docker/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..a3355b5e --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,116 @@ +from alpine:latest + +ENV SCRIPT_VERSION=1.3.0 +ENV USE_BACKUP=no +ENV HOME_DIR=/ +ENV SOURCE_DIR=/source +ENV SOFT_DIR=/usr + +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_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 + +# 编译必需的 +RUN apk add cmake gcc g++ autoconf git libstdc++ linux-headers make m4 libgcc binutils ncurses +# php的zlib支持 +RUN apk add zlib-dev zlib-static +# php的mbstring支持 +RUN apk add oniguruma-dev +# php的openssl支持 +RUN apk add openssl-libs-static openssl-dev openssl +# php的gd支持,如果不需要gd则去掉--enable-gd和下面的依赖 +RUN apk add libpng-dev libpng-static +# curl的c-ares支持,如果不需要curl则去掉 +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/ + +RUN mkdir downloads && mkdir source && cd downloads + +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 +RUN wget "http://mirrors.zhamao.xin/pecl/hash-${VER_HASH}.tgz" -O hash.tar.gz +RUN wget "http://mirrors.zhamao.xin/pecl/inotify-${VER_INOTIFY}.tgz" -O inotify.tar.gz +RUN wget "http://mirrors.zhamao.xin/pecl/redis-${VER_REDIS}.tgz" -O redis.tar.gz +RUN wget "https://dl.zhamao.me/libxml2/libxml2-${VER_LIBXML2}.tar.gz" -O libxml2.tar.gz +RUN wget "https://dl.zhamao.me/liblzma/liblzma.tar.gz" +RUN wget "https://dl.zhamao.me/curl/curl-${VER_CURL}.tar.gz" -O curl.tar.gz + +RUN tar -xf php.tar.gz && \ + tar -xf swoole.tar.gz && \ + tar -xf hash.tar.gz && \ + tar -xf inotify.tar.gz && \ + tar -xf redis.tar.gz && \ + tar -xf libxml2.tar.gz && \ + tar -xf liblzma.tar.gz && \ + tar -xf curl.tar.gz + +RUN cd liblzma && \ + ./configure && \ + make -j4 && \ + make install && \ + echo "编译 liblzma 完成!" + +RUN cd "libxml2-${VER_LIBXML2}" && \ + ./configure --with-lzma --without-python && \ + make -j4 && \ + make install && \ + echo "编译 libxml2 完成!" + +RUN cd "curl-${VER_CURL}" && \ + CC=gcc CXX=g++ CFLAGS=-fPIC CPPFLAGS=-fPIC ./configure \ + --without-nghttp2 \ + --with-ssl=/usr \ + --with-pic=pic \ + --enable-ipv6 \ + --enable-shared=no \ + --without-libidn2 \ + --disable-ldap \ + --without-libpsl \ + --without-lber \ + --enable-ares && \ + make -j4 && \ + make install && \ + echo "编译 curl 完成!" + +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 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" && \ + ./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 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 +