Sign inSign up

loadingying/metowolfnginx

By loadingying

•Updated over 6 years ago

Image
0

395

loadingying/metowolfnginx repository overview

⁠引用: https://github.com/metowolf/docker-nginx⁠

⁠Dockerfile

FROM rust:1.43-alpine as builder

LABEL maintainer="metowolf <[email protected]>"

ARG NGINX_VERSION=1.19.0
# ARG OPENSSL_VERSION=1.1.1d

RUN set -ex \
    && apk upgrade \
    && apk add --no-cache \
    build-base \
    openssl-dev \
    pcre-dev \
    zlib-dev \
    linux-headers \
    curl \
    gnupg \
    libxslt-dev \
    gd-dev \
    geoip-dev \
    git \
    gettext \
    patch \
    cmake \
    go \
    && curl -fSL https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \
    && curl -fSL https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o nginx.tar.gz.asc \
    && export GNUPGHOME="$(mktemp -d)"; \
    for key in \
    B0F4253373F8F6F510D42178520A9993A1C052F8 \
    ; do \
    gpg --batch --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options timeout=10 --recv-keys "$key" || \
    gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --keyserver-options timeout=10 --recv-keys "$key" || \
    gpg --batch --keyserver hkp://pgp.mit.edu:80 --keyserver-options timeout=10 --recv-keys "$key" ; \
    done \
    && gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz \
    && mkdir -p /usr/src \
    && tar -zxC /usr/src -f nginx.tar.gz \
    && rm nginx.tar.gz



RUN set -ex \
    && cd /usr/src/nginx-$NGINX_VERSION \
    \
    # Brotli
    && git clone https://github.com/eustas/ngx_brotli.git --depth=1 \
    && (cd ngx_brotli; git submodule update --init) \
    \
    # cf-zlib
    && git clone https://github.com/cloudflare/zlib.git --depth 1 \
    && (cd zlib; make -f Makefile.in distclean) \
    \
    # Quiche
    && git clone https://github.com/cloudflare/quiche --depth=1 \
    && (cd quiche; git submodule update --init) \
    && patch -p01 --ignore-whitespace < ./quiche/extras/nginx/nginx-1.16.patch \
    \
    # OpenSSL
    # && curl -fSL https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -o openssl-${OPENSSL_VERSION}.tar.gz \
    # && tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
    \
    # Sticky
    && mkdir nginx-sticky-module-ng \
    && curl -fSL https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz -o nginx-sticky-module-ng.tar.gz \
    && tar -zxC nginx-sticky-module-ng -f nginx-sticky-module-ng.tar.gz --strip 1 \
    \
    # headers-more-nginx
    && git clone https://github.com/openresty/headers-more-nginx-module.git --depth 1 \
    \
    # nginx_cookie_flag_module
    && mkdir nginx_cookie_flag_module \
    && curl -fSL https://github.com/AirisX/nginx_cookie_flag_module/archive/v1.1.0.tar.gz -o nginx_cookie_flag.tar.gz \
    && tar -zxC nginx_cookie_flag_module -f nginx_cookie_flag.tar.gz --strip 1 


RUN cd /usr/src/nginx-$NGINX_VERSION \
    && ./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib/nginx/modules \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --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 \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_auth_request_module \
    --with-http_xslt_module \
    --with-http_image_filter_module \
    --with-http_geoip_module \
    --with-threads \
    --with-stream \
    --with-stream_ssl_module \
    --with-stream_ssl_preread_module \
    --with-stream_realip_module \
    --with-stream_geoip_module \
    --with-http_slice_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-compat \
    --with-file-aio \
    --with-http_v2_module \
    --with-http_v3_module \
    --with-zlib=/usr/src/nginx-${NGINX_VERSION}/zlib \
    --add-module=/usr/src/nginx-${NGINX_VERSION}/ngx_brotli \
    --add-module=/usr/src/nginx-${NGINX_VERSION}/nginx-sticky-module-ng \
    --add-module=/usr/src/nginx-${NGINX_VERSION}/headers-more-nginx-module \
    \
    --add-module=/usr/src/nginx-${NGINX_VERSION}/nginx_cookie_flag_module \
    \
    --with-openssl=/usr/src/nginx-${NGINX_VERSION}/quiche/deps/boringssl \
    --with-quiche=/usr/src/nginx-${NGINX_VERSION}/quiche \
    && make -j$(getconf _NPROCESSORS_ONLN) \
    && make install \
    && rm -rf /etc/nginx/html/ \
    && mkdir /etc/nginx/conf.d/ \
    && mkdir -p /usr/share/nginx/html/ \
    && install -m644 html/index.html /usr/share/nginx/html/ \
    && install -m644 html/50x.html /usr/share/nginx/html/ \
    && ln -s ../../usr/lib/nginx/modules /etc/nginx/modules \
    && strip /usr/sbin/nginx* \
    && nginx -V

COPY config/nginx.conf /etc/nginx/nginx.conf
COPY config/nginx.vh.default.conf /etc/nginx/conf.d/default.conf
COPY config/logrotate /etc/nginx/logrotate


FROM alpine:3.12

LABEL maintainer="metowolf <[email protected]>"

COPY --from=builder /etc/nginx /etc/nginx
COPY --from=builder /usr/sbin/nginx /usr/sbin/nginx
COPY --from=builder /usr/bin/envsubst /usr/local/bin/envsubst
COPY --from=builder /usr/share/nginx /usr/share/nginx


RUN set -ex \
    && runDeps="$( \
    scanelf --needed --nobanner --format '%n#p' --recursive /usr/ \
    | tr ',' '\n' \
    | sort -u \
    | awk 'system("[ -e /usr/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
    )" \
    && apk --no-cache add $runDeps \
    tzdata \
    logrotate \
    && sed -i -e 's:/var/log/messages {}:# /var/log/messages {}:' /etc/logrotate.conf \
    && echo '1 0 * * * /usr/sbin/logrotate /etc/logrotate.conf -f' > /var/spool/cron/crontabs/root \
    && addgroup -S nginx \
    && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \
    && mkdir -p /var/log/nginx \
    && ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log \
    && mv /etc/nginx/logrotate /etc/logrotate.d/nginx \
    && chmod 755 /etc/logrotate.d/nginx

COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 80 443
STOPSIGNAL SIGTERM

CMD ["nginx", "-g", "daemon off;"]



Tag summary

Content type

Image

Digest

Size

8.9 MB

Last updated

over 6 years ago

docker pull loadingying/metowolfnginx