Last active
January 5, 2018 14:57
-
-
Save btd/6aa9f754be228dbac781b5bd79f2a31e to your computer and use it in GitHub Desktop.
Nginx + ngx_brotli
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM alpine:3.7 | |
LABEL maintainer="Denis Bardadym <[email protected]>" | |
ENV NGINX_VERSION 1.13.8 | |
ENV BROTLI_COMMIT 5b4769990dc14a2bd466d2599c946c5652cba4b2 | |
ENV NGX_BROTLI_COMMIT 14dede1d3b2827d5135231f101b0af2e287a82d7 | |
RUN CONFIG="\ | |
--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-dynamic-module=extra/ngx_brotli \ | |
" \ | |
&& addgroup -S nginx \ | |
&& adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx \ | |
&& apk add --no-cache --virtual .build-deps \ | |
gcc \ | |
libc-dev \ | |
make \ | |
openssl-dev \ | |
pcre-dev \ | |
zlib-dev \ | |
linux-headers \ | |
curl \ | |
libxslt-dev \ | |
gd-dev \ | |
geoip-dev \ | |
&& curl -fSL https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz \ | |
&& mkdir -p /usr/src \ | |
&& tar -zxC /usr/src -f nginx.tar.gz \ | |
&& rm nginx.tar.gz \ | |
&& cd /usr/src/nginx-$NGINX_VERSION \ | |
&& mkdir ./extra \ | |
&& cd ./extra \ | |
&& curl -fSL https://github.com/eustas/ngx_brotli/archive/$NGX_BROTLI_COMMIT.tar.gz -o ./ngx_brotli.tar.gz \ | |
&& tar -zxC ./ -f ngx_brotli.tar.gz \ | |
&& rm ngx_brotli.tar.gz \ | |
&& mv ngx_brotli-$NGX_BROTLI_COMMIT ngx_brotli \ | |
&& curl -fSL https://github.com/google/brotli/archive/$BROTLI_COMMIT.tar.gz -o ./ngx_brotli/deps/brotli.tar.gz \ | |
&& tar -zxC ./ngx_brotli/deps/ -f ./ngx_brotli/deps/brotli.tar.gz \ | |
&& rm ./ngx_brotli/deps/brotli.tar.gz \ | |
&& rm -r ./ngx_brotli/deps/brotli \ | |
&& mv ./ngx_brotli/deps/brotli-$BROTLI_COMMIT ./ngx_brotli/deps/brotli \ | |
&& cd .. \ | |
&& ./configure $CONFIG --with-debug \ | |
&& make -j$(getconf _NPROCESSORS_ONLN) \ | |
&& mv objs/nginx objs/nginx-debug \ | |
&& mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so \ | |
&& mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so \ | |
&& mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so \ | |
&& mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so \ | |
&& ./configure $CONFIG \ | |
&& 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/ \ | |
&& install -m755 objs/nginx-debug /usr/sbin/nginx-debug \ | |
&& install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so \ | |
&& install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so \ | |
&& install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so \ | |
&& install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so \ | |
&& ln -s ../../usr/lib/nginx/modules /etc/nginx/modules \ | |
&& strip /usr/sbin/nginx* \ | |
&& strip /usr/lib/nginx/modules/*.so \ | |
&& rm -rf /usr/src/nginx-$NGINX_VERSION \ | |
\ | |
&& apk add --no-cache --virtual .gettext gettext \ | |
&& mv /usr/bin/envsubst /tmp/ \ | |
\ | |
&& runDeps="$( \ | |
scanelf --needed --nobanner --format '%n#p' /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst \ | |
| tr ',' '\n' \ | |
| sort -u \ | |
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ | |
)" \ | |
&& apk add --no-cache --virtual .nginx-rundeps $runDeps \ | |
&& apk del .build-deps \ | |
&& apk del .gettext \ | |
&& mv /tmp/envsubst /usr/local/bin/ \ | |
\ | |
&& ln -sf /dev/stdout /var/log/nginx/access.log \ | |
&& ln -sf /dev/stderr /var/log/nginx/error.log | |
COPY ./mime.types /etc/nginx/ | |
COPY ./*.conf /etc/nginx/ | |
EXPOSE 80 | |
STOPSIGNAL SIGTERM | |
CMD ["nginx", "-g", "daemon off;"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment