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
构建命令
在包含 Dockerfile 和 nginx-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)
暂无评论