Skip to content

Commit b7c2f8c

Browse files
authored
Merge pull request #11 from macbre/sync-with-fork-upstream
[fork sync] switch to multistage build, use ARGs, get rid of Perl nginx module
2 parents 625b376 + 98bdd90 commit b7c2f8c

File tree

3 files changed

+87
-44
lines changed

3 files changed

+87
-44
lines changed

Dockerfile

Lines changed: 57 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1-
FROM alpine:3.12
2-
3-
LABEL maintainer="NGINX Docker Maintainers <[email protected]>"
4-
5-
ENV NGINX_VERSION 1.19.2
1+
ARG NGINX_VERSION=1.19.2
62

73
# https://github.com/google/ngx_brotli
8-
ENV NGX_BROTLI_COMMIT 25f86f0bac1101b6512135eac5f93c49c63609e3
9-
10-
RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
11-
&& CONFIG="\
4+
ARG NGX_BROTLI_COMMIT=25f86f0bac1101b6512135eac5f93c49c63609e3
5+
ARG CONFIG="\
126
--prefix=/etc/nginx \
137
--sbin-path=/usr/sbin/nginx \
148
--modules-path=/usr/lib/nginx/modules \
@@ -40,7 +34,6 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
4034
--with-http_xslt_module=dynamic \
4135
--with-http_image_filter_module=dynamic \
4236
--with-http_geoip_module=dynamic \
43-
--with-http_perl_module=dynamic \
4437
--with-threads \
4538
--with-stream \
4639
--with-stream_ssl_module \
@@ -54,10 +47,17 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
5447
--with-file-aio \
5548
--with-http_v2_module \
5649
--add-module=/usr/src/ngx_brotli \
57-
" \
58-
&& addgroup -S nginx \
59-
&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \
60-
&& apk add --no-cache --virtual .build-deps \
50+
"
51+
52+
FROM alpine:3.12
53+
LABEL maintainer="NGINX Docker Maintainers <[email protected]>"
54+
55+
ARG NGINX_VERSION
56+
ARG NGX_BROTLI_COMMIT
57+
ARG CONFIG
58+
59+
RUN \
60+
apk add --no-cache --virtual .build-deps \
6161
gcc \
6262
libc-dev \
6363
make \
@@ -70,41 +70,49 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
7070
libxslt-dev \
7171
gd-dev \
7272
geoip-dev \
73-
perl-dev \
7473
&& apk add --no-cache --virtual .brotli-build-deps \
7574
autoconf \
7675
libtool \
7776
automake \
7877
git \
7978
g++ \
80-
cmake \
81-
&& mkdir -p /usr/src \
82-
&& cd /usr/src \
83-
&& git clone --recursive https://github.com/google/ngx_brotli.git \
84-
&& cd ngx_brotli \
85-
&& git checkout -b $NGX_BROTLI_COMMIT $NGX_BROTLI_COMMIT \
79+
cmake
80+
81+
COPY nginx.pub /tmp/nginx.pub
82+
83+
RUN \
84+
echo "Compiling nginx $NGINX_VERSION with brotli $NGX_BROTLI_COMMIT" \
85+
&& mkdir -p /usr/src/ngx_brotli \
86+
&& cd /usr/src/ngx_brotli \
87+
&& git init \
88+
&& git remote add origin https://github.com/google/ngx_brotli.git \
89+
&& git fetch --depth 1 origin $NGX_BROTLI_COMMIT \
90+
&& git checkout --recurse-submodules -q FETCH_HEAD \
91+
&& git submodule update --init --depth 1 \
8692
&& cd .. \
8793
&& curl -fSL https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \
8894
&& curl -fSL https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc -o nginx.tar.gz.asc \
8995
&& sha512sum nginx.tar.gz nginx.tar.gz.asc \
9096
&& export GNUPGHOME="$(mktemp -d)" \
91-
&& gpg --keyserver ipv4.pool.sks-keyservers.net --recv-keys "$GPG_KEYS" \
97+
&& gpg --import /tmp/nginx.pub \
9298
&& gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz \
93-
&& rm -rf "$GNUPGHOME" nginx.tar.gz.asc \
9499
&& mkdir -p /usr/src \
95-
&& tar -zxC /usr/src -f nginx.tar.gz \
96-
&& rm nginx.tar.gz \
97-
&& cd /usr/src/nginx-$NGINX_VERSION \
100+
&& tar -zxC /usr/src -f nginx.tar.gz
101+
102+
RUN \
103+
cd /usr/src/nginx-$NGINX_VERSION \
98104
&& ./configure $CONFIG --with-debug \
99105
&& make -j$(getconf _NPROCESSORS_ONLN) \
100106
&& mv objs/nginx objs/nginx-debug \
101107
&& mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so \
102108
&& mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so \
103109
&& mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so \
104-
&& mv objs/ngx_http_perl_module.so objs/ngx_http_perl_module-debug.so \
105110
&& mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so \
106111
&& ./configure $CONFIG \
107-
&& make -j$(getconf _NPROCESSORS_ONLN) \
112+
&& make -j$(getconf _NPROCESSORS_ONLN)
113+
114+
RUN \
115+
cd /usr/src/nginx-$NGINX_VERSION \
108116
&& make install \
109117
&& rm -rf /etc/nginx/html/ \
110118
&& mkdir /etc/nginx/conf.d/ \
@@ -115,13 +123,9 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
115123
&& install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so \
116124
&& install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so \
117125
&& install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so \
118-
&& install -m755 objs/ngx_http_perl_module-debug.so /usr/lib/nginx/modules/ngx_http_perl_module-debug.so \
119126
&& install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so \
120-
&& ln -s ../../usr/lib/nginx/modules /etc/nginx/modules \
121127
&& strip /usr/sbin/nginx* \
122128
&& strip /usr/lib/nginx/modules/*.so \
123-
&& rm -rf /usr/src/nginx-$NGINX_VERSION \
124-
&& rm -rf /usr/src/ngx_brotli \
125129
\
126130
# https://tools.ietf.org/html/rfc7919
127131
# https://github.com/mozilla/ssl-config-generator/blob/master/docs/ffdhe2048.txt
@@ -132,22 +136,32 @@ RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 \
132136
# then move `envsubst` out of the way so `gettext` can
133137
# be deleted completely, then move `envsubst` back.
134138
&& apk add --no-cache --virtual .gettext gettext \
135-
&& mv /usr/bin/envsubst /tmp/ \
136139
\
137-
&& runDeps="$( \
138-
scanelf --needed --nobanner /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst \
140+
&& scanelf --needed --nobanner /usr/sbin/nginx /usr/lib/nginx/modules/*.so /usr/bin/envsubst \
139141
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
140142
| sort -u \
141143
| xargs -r apk info --installed \
142-
| sort -u \
143-
)" \
144-
&& apk add --no-cache --virtual .nginx-rundeps tzdata $runDeps \
145-
&& apk del .build-deps \
146-
&& apk del .brotli-build-deps \
147-
&& apk del .gettext \
148-
&& mv /tmp/envsubst /usr/local/bin/ \
149-
\
144+
| sort -u > /tmp/runDeps.txt
145+
146+
FROM alpine:3.12
147+
ARG NGINX_VERSION
148+
149+
COPY --from=0 /tmp/runDeps.txt /tmp/runDeps.txt
150+
COPY --from=0 /etc/nginx /etc/nginx
151+
COPY --from=0 /usr/lib/nginx/modules/*.so /usr/lib/nginx/modules/
152+
COPY --from=0 /usr/sbin/nginx /usr/sbin/nginx-debug /usr/sbin/
153+
COPY --from=0 /usr/share/nginx/html/* /usr/share/nginx/html/
154+
COPY --from=0 /usr/bin/envsubst /usr/local/bin/envsubst
155+
156+
RUN \
157+
addgroup -S nginx \
158+
&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \
159+
&& apk add --no-cache --virtual .nginx-rundeps tzdata $(cat /tmp/runDeps.txt) \
160+
&& rm /tmp/runDeps.txt \
161+
&& ln -s /usr/lib/nginx/modules /etc/nginx/modules \
150162
# forward request and error logs to docker log collector
163+
&& mkdir /var/log/nginx \
164+
&& touch /var/log/nginx/access.log /var/log/nginx/error.log \
151165
&& ln -sf /dev/stdout /var/log/nginx/access.log \
152166
&& ln -sf /dev/stderr /var/log/nginx/error.log
153167

nginx.pub

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
mQENBE7SKu8BCADQo6x4ZQfAcPlJMLmL8zBEBUS6GyKMMMDtrTh3Yaq481HB54oR
4+
0cpKL05Ff9upjrIzLD5TJUCzYYM9GQOhguDUP8+ZU9JpSz3yO2TvH7WBbUZ8FADf
5+
hblmmUBLNgOWgLo3W+FYhl3mz1GFS2Fvid6Tfn02L8CBAj7jxbjL1Qj/OA/WmLLc
6+
m6BMTqI7IBlYW2vyIOIHasISGiAwZfp0ucMeXXvTtt14LGa8qXVcFnJTdwbf03AS
7+
ljhYrQnKnpl3VpDAoQt8C68YCwjaNJW59hKqWB+XeIJ9CW98+EOAxLAFszSyGanp
8+
rCqPd0numj9TIddjcRkTA/ZbmCWK+xjpVBGXABEBAAG0IU1heGltIERvdW5pbiA8
9+
bWRvdW5pbkBtZG91bmluLnJ1PokBOAQTAQIAIgUCTtIq7wIbAwYLCQgHAwIGFQgC
10+
CQoLBBYCAwECHgECF4AACgkQUgqZk6HAUvj+iwf/b4FS6zVzJ5T0v1vcQGD4ZzXe
11+
D5xMC4BJW414wVMU15rfX7aCdtoCYBNiApPxEd7SwiyxWRhRA9bikUq87JEgmnyV
12+
0iYbHZvCvc1jOkx4WR7E45t1Mi29KBoPaFXA9X5adZkYcOQLDxa2Z8m6LGXnlF6N
13+
tJkxQ8APrjZsdrbDvo3HxU9muPcq49ydzhgwfLwpUs11LYkwB0An9WRPuv3jporZ
14+
/XgI6RfPMZ5NIx+FRRCjn6DnfHboY9rNF6NzrOReJRBhXCi6I+KkHHEnMoyg8XET
15+
9lVkfHTOl81aIZqrAloX3/00TkYWyM2zO9oYpOg6eUFCX/Lw4MJZsTcT5EKVxLkB
16+
DQRO0irvAQgA0LjCc8S6oZzjiap2MjRNhRFA5BYjXZRZBdKF2VP74avt2/RELq8G
17+
W0n7JWmKn6vvrXabEGLyfkCngAhTq9tJ/K7LPx/bmlO5+jboO/1inH2BTtLiHjAX
18+
vicXZk3oaZt2Sotx5mMI3yzpFQRVqZXsi0LpUTPJEh3oS8IdYRjslQh1A7P5hfCZ
19+
wtzwb/hKm8upODe/ITUMuXeWfLuQj/uEU6wMzmfMHb+jlYMWtb+v98aJa2FODeKP
20+
mWCXLa7bliXp1SSeBOEfIgEAmjM6QGlDx5sZhr2Ss2xSPRdZ8DqD7oiRVzmstX1Y
21+
oxEzC0yXfaefC7SgM0nMnaTvYEOYJ9CH3wARAQABiQEfBBgBAgAJBQJO0irvAhsM
22+
AAoJEFIKmZOhwFL4844H/jo8icCcS6eOWvnen7lg0FcCo1fIm4wW3tEmkQdchSHE
23+
CJDq7pgTloN65pwB5tBoT47cyYNZA9eTfJVgRc74q5cexKOYrMC3KuAqWbwqXhkV
24+
s0nkWxnOIidTHSXvBZfDFA4Idwte94Thrzf8Pn8UESudTiqrWoCBXk2UyVsl03gJ
25+
blSJAeJGYPPeo+Yj6m63OWe2+/S2VTgmbPS/RObn0Aeg7yuff0n5+ytEt2KL51gO
26+
QE2uIxTCawHr12PsllPkbqPk/PagIttfEJqn9b0CrqPC3HREePb2aMJ/Ctw/76CO
27+
wn0mtXeIXLCTvBmznXfaMKllsqbsy2nCJ2P2uJjOntw=
28+
=NeQn
29+
-----END PGP PUBLIC KEY BLOCK-----

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ nginx version: nginx/1.19.2
1616
built by gcc 9.3.0 (Alpine 9.3.0)
1717
built with OpenSSL 1.1.1g 21 Apr 2020
1818
TLS SNI support enabled
19-
configure arguments: --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=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module --add-module=/usr/src/ngx_brotli
19+
configure arguments: --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=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module --add-module=/usr/src/ngx_brotli
2020
```
2121

2222
> [nginx release notes](https://nginx.org/en/CHANGES)

0 commit comments

Comments
 (0)