update Dockerfile

This commit is contained in:
2021-06-02 19:57:55 +08:00
parent 89a1526501
commit 908f7c8b98
6 changed files with 253 additions and 87 deletions

View File

@@ -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
# phpmbstring支持
# php mbstring dependencies
RUN apk add oniguruma-dev
# phpopenssl支持
# php openssl dependencies
RUN apk add openssl-libs-static openssl-dev openssl
# phpgd支持如果不需要gd则去掉--enable-gd和下面的依赖
# php gd dependencies
RUN apk add libpng-dev libpng-static
# curlc-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