boxmoe_header_banner_img

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

文章导读

自用Dockerfile拽写——Nginx


avatar
anmiao 2026 年 3 月 10 日 22

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://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 --non-interactive install --no-recommends -y \
    curl \
    tar \
    xz \
    gzip \
    gcc \
    gcc-c++ \
    make \
    automake \
    zlib-devel \
    openssl-devel \
    pcre \
    pcre-devel
WORKDIR /anmiao
ADD ./nginx-1.27.5.tar.gz  /anmiao
RUN cd /anmiao/nginx-1.27.5 && ./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib64/nginx/modules \
    --conf-path=/etc/nginx/nginx.conf \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --http-client-body-temp-path=/var/cache/nginx/client_temp \
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
    --with-compat \
    --with-file-aio \
    --with-threads \
    --with-http_addition_module \
    --with-http_auth_request_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_mp4_module \
    --with-http_random_index_module \
    --with-http_realip_module \
    --with-http_secure_link_module \
    --with-http_slice_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_v2_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-stream \
    --with-stream_realip_module \
    --with-stream_ssl_module \
    --with-stream_ssl_preread_module \
    --with-ipv6 && \
    make -j $(nproc) && make install
FROM opensuse/leap:latest
LABEL maintainer="闇喵 <anmiaoneko@gmail.com>"
COPY --from=builder /etc/nginx /etc/nginx
COPY --from=builder /usr/sbin/nginx /usr/sbin
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 --non-interactive install --no-recommends -y \
    zlib-devel \
    openssl-devel \
    pcre \
    pcre-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 /var/cache/nginx/client_temp && \
    mkdir -p /var/cache/nginx/proxy_temp && \
    mkdir -p /var/cache/nginx/fastcgi_temp && \
    mkdir -p /var/cache/nginx/uwsgi_temp && \
    mkdir -p /var/cache/nginx/scgi_temp && \
    chown anmiao:anmiao -R /var/cache/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

构建与准备工作

获取二进制包

在构建镜像之前,请先从 Nginx官网下载对应的版本包到本地:

Download URL:
https://nginx.org/download/nginx-1.27.5.tar.gz

构建命令

在包含 Dockerfilenginx-1.27.5.tar.gz 的目录下运行:

docker pull opensuse/leap:latest && docker build . -t nginx:v1.27.5

构建结束后清理缓存

PS:防止缓存过多导致占用磁盘过错

docker builder prune --all

清理24小时之前的缓存

docker builder prune --filter "until=24h"


评论(0)

查看评论列表

暂无评论


发表评论

闇喵の 寄毅