Dockerfile:
Dockerfile 采用openSUSE Leap 最新稳定版, 通过换源并安装基础依赖. 由于我使用香港·阿里云进行镜像构建这里使用了 .id 镜像源提升亚太地区访问速度, 并清理缓存以精简镜像体积. 并设置了UTF-8环境变量与时区设置为香港
FROM opensuse/leap:latest AS builder
RUN zypper mr -da && \
zypper ar -fcg 'https://download.opensuse.id/distribution/leap/15.6/repo/oss' ANMIAO:OSS && \
zypper ar -fcg 'https://download.opensuse.id/distribution/leap/15.6/repo/non-oss' ANMIAO:NON-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/oss' ANMIAO:UPDATE-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/non-oss' ANMIAO:UPDATE-NON-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/sle' ANMIAO:UPDATE-SLE && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/backports' ANMIAO:UPDATE-BACKPORTS && \
zypper --gpg-auto-import-keys refresh -f && \
zypper install -y --no-recommends \
curl tar xz gzip \
gcc gcc-c++ make \
libopenssl-devel \
libxml2-devel \
libcurl-devel \
libzip-devel \
oniguruma-devel \
sqlite3-devel \
readline-devel \
libicu-devel \
libjpeg62-devel \
libpng16-devel \
argon2-devel \
libpng-devel \
libjpeg-devel \
libexif-devel \
libavif-devel \
libwebp-devel \
freetype2-devel \
libxslt-devel \
&& zypper clean --all \
&& rm -rf /var/cache/zypper/*
ADD ./php-8.2.30.tar.gz /anmiao
RUN cd /anmiao/php-8.2.30 && ./configure \
--prefix=/usr/local \
--with-config-file-path=/usr/local/etc/php \
--with-config-file-scan-dir=/usr/local/etc/php/conf.d \
--enable-fpm --with-fpm-user=anmiao --with-fpm-group=anmiao \
--disable-cgi \
--enable-mbstring \
--enable-xml \
--enable-exif \
--enable-gd \
--enable-bcmath \
--enable-intl \
--enable-opcache \
--with-curl \
--with-openssl \
--with-zlib \
--with-mysqli \
--with-pdo-mysql \
--with-zip \
--with-password-argon2 \
--with-libxml \
--with-xsl \
--with-pdo-sqlite \
--with-jpeg \
--with-webp \
--with-avif \
--with-freetype && \
make -j$(nproc) && make install
FROM opensuse/leap:latest
LABEL maintainer="闇喵 <anmiao@am.moe>"
COPY --from=builder /usr/local /usr/local
RUN zypper mr -da && \
zypper ar -fcg 'https://download.opensuse.id/distribution/leap/15.6/repo/oss' ANMIAO:OSS && \
zypper ar -fcg 'https://download.opensuse.id/distribution/leap/15.6/repo/non-oss' ANMIAO:NON-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/oss' ANMIAO:UPDATE-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/non-oss' ANMIAO:UPDATE-NON-OSS && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/sle' ANMIAO:UPDATE-SLE && \
zypper ar -fcg 'https://download.opensuse.id/update/leap/15.6/backports' ANMIAO:UPDATE-BACKPORTS && \
zypper --gpg-auto-import-keys refresh -f && \
zypper update -y && \
zypper install -y --no-recommends \
libopenssl-devel \
libxml2-devel \
libcurl-devel \
libzip-devel \
oniguruma-devel \
sqlite3-devel \
readline-devel \
libicu-devel \
libjpeg62-devel \
libpng16-devel \
argon2-devel \
libpng-devel \
libjpeg-devel \
libexif-devel \
libavif-devel \
libwebp-devel \
freetype2-devel \
libxslt-devel \
&& zypper clean --all \
&& rm -rf /var/cache/zypper/*
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
RUN ln -snf /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime && \
echo 'Asia/Hong_Kong' > /etc/timezone
WORKDIR /anmiao
RUN /usr/sbin/useradd -r -c 'User for anmiao' -U anmiao -s /usr/sbin/nologin && \
mkdir -p /usr/local/etc/php/conf.d && \
cp -ap /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf && \
cp -ap /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/^listen = 127.0.0.1:9000/s/127.0.0.1/0.0.0.0/' /usr/local/etc/php-fpm.d/www.conf && \
chown anmiao:anmiao -R /anmiao
EXPOSE 9000
CMD ["/usr/local/sbin/php-fpm", "--nodaemonize", "--fpm-config", "/usr/local/etc/php-fpm.conf"]
FROM opensuse/leap:latest AS builder
RUN zypper mr -da && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/distribution/leap/15.6/repo/oss' ANMIAO:OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/distribution/leap/15.6/repo/non-oss' ANMIAO:NON-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/oss' ANMIAO:UPDATE-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/non-oss' ANMIAO:UPDATE-NON-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/sle' ANMIAO:UPDATE-SLE && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/backports' ANMIAO:UPDATE-BACKPORTS && \
zypper --gpg-auto-import-keys refresh -f && \
zypper install -y --no-recommends \
curl tar xz gzip \
gcc gcc-c++ make \
libopenssl-devel \
libxml2-devel \
libcurl-devel \
libzip-devel \
oniguruma-devel \
sqlite3-devel \
readline-devel \
libicu-devel \
libjpeg62-devel \
libpng16-devel \
argon2-devel \
libpng-devel \
libjpeg-devel \
libexif-devel \
libavif-devel \
libwebp-devel \
freetype2-devel \
libxslt-devel \
&& zypper clean --all \
&& rm -rf /var/cache/zypper/*
ADD ./php-8.2.30.tar.gz /anmiao
RUN cd /anmiao/php-8.2.30 && ./configure \
--prefix=/usr/local \
--with-config-file-path=/usr/local/etc/php \
--with-config-file-scan-dir=/usr/local/etc/php/conf.d \
--enable-fpm --with-fpm-user=anmiao --with-fpm-group=anmiao \
--disable-cgi \
--enable-mbstring \
--enable-xml \
--enable-exif \
--enable-gd \
--enable-bcmath \
--enable-intl \
--enable-opcache \
--with-curl \
--with-openssl \
--with-zlib \
--with-mysqli \
--with-pdo-mysql \
--with-zip \
--with-password-argon2 \
--with-libxml \
--with-xsl \
--with-pdo-sqlite \
--with-jpeg \
--with-webp \
--with-avif \
--with-freetype && \
make -j$(nproc) && make install
FROM opensuse/leap:latest
LABEL maintainer="闇喵 <anmiao@am.moe>"
COPY --from=builder /usr/local /usr/local
RUN zypper mr -da && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/distribution/leap/15.6/repo/oss' ANMIAO:OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/distribution/leap/15.6/repo/non-oss' ANMIAO:NON-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/oss' ANMIAO:UPDATE-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/non-oss' ANMIAO:UPDATE-NON-OSS && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/sle' ANMIAO:UPDATE-SLE && \
zypper ar -fcg 'https://chinanet.mirrors.ustc.edu.cn/opensuse/update/leap/15.6/backports' ANMIAO:UPDATE-BACKPORTS && \
zypper --gpg-auto-import-keys refresh -f && \
zypper update -y && \
zypper install -y --no-recommends \
libopenssl-devel \
libxml2-devel \
libcurl-devel \
libzip-devel \
oniguruma-devel \
sqlite3-devel \
readline-devel \
libicu-devel \
libjpeg62-devel \
libpng16-devel \
argon2-devel \
libpng-devel \
libjpeg-devel \
libexif-devel \
libavif-devel \
libwebp-devel \
freetype2-devel \
libxslt-devel \
&& zypper clean --all \
&& rm -rf /var/cache/zypper/*
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
RUN ln -snf /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime && \
echo 'Asia/Hong_Kong' > /etc/timezone
WORKDIR /anmiao
RUN /usr/sbin/useradd -r -c 'User for anmiao' -U anmiao -s /usr/sbin/nologin && \
mkdir -p /usr/local/etc/php/conf.d && \
cp -ap /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf && \
cp -ap /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf && \
sed -i '/^listen = 127.0.0.1:9000/s/127.0.0.1/0.0.0.0/' /usr/local/etc/php-fpm.d/www.conf && \
chown anmiao:anmiao -R /anmiao
EXPOSE 9000
CMD ["/usr/local/sbin/php-fpm", "--nodaemonize", "--fpm-config", "/usr/local/etc/php-fpm.conf"]
构建与准备工作
获取二进制包
在构建镜像之前,请先从 PHP官网下载对应的版本包到本地:
Download URL:
https://www.php.net/distributions/php-8.2.30.tar.gz
构建命令
在包含 Dockerfile 和 alist-linux-amd64.tar.gz 的目录下运行:
docker pull opensuse/leap:latest && docker build . -t php:v8.2.30
构建结束后清理缓存
PS:防止缓存过多导致占用磁盘过错
docker builder prune --all
清理24小时之前的缓存
docker builder prune --filter "until=24h"
评论(0)
暂无评论