boxmoe_header_banner_img

私は、良からぬ事を企んでいることを厳粛に誓います

文章导读

基于 openSUSE自用Dockerfile拽写——PHP


avatar
anmiao 2026 年 3 月 11 日 18

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

构建命令

在包含 Dockerfilealist-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)

查看评论列表

暂无评论


发表评论

闇喵の 寄毅