1+ FROM mhart/alpine-node:6.11.2
2+
3+ # Inspired by wunderkraut/alpine-nginx-pagespeed (aka ilari/alpine-nginx-pagespeed:latest) with some extra modules.
4+
5+ RUN set -x && \
6+ apk --no-cache add -t .build-deps \
7+ apache2-dev \
8+ apr-dev \
9+ apr-util-dev \
10+ build-base \
11+ curl \
12+ icu-dev \
13+ libjpeg-turbo-dev \
14+ linux-headers \
15+ gperf \
16+ openssl-dev \
17+ pcre-dev \
18+ python \
19+ zlib-dev && \
20+ # Build libpng:
21+ # This sadly requires an old version of http://www.libpng.org/pub/png/libpng.html
22+ LIBPNG_VERSION=1.2.56 && \
23+ cd /tmp && \
24+ curl -L https://nchc.dl.sourceforge.net/project/libpng/libpng12/older-releases/1.2.56/libpng-1.2.56.tar.gz | tar -zx && \
25+ cd /tmp/libpng-${LIBPNG_VERSION} && \
26+ ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --with-libpng-compat && \
27+ make install V=0 && \
28+ # Build PageSpeed:
29+ # Check https://github.com/pagespeed/ngx_pagespeed/releases for the latest version
30+ PAGESPEED_VERSION=1.11.33.3 && \
31+ cd /tmp && \
32+ curl -L https://dl.google.com/dl/linux/mod-pagespeed/tar/beta/mod-pagespeed-beta-${PAGESPEED_VERSION}-r0.tar.bz2 | tar -jx && \
33+ curl -L https://github.com/pagespeed/ngx_pagespeed/archive/v${PAGESPEED_VERSION}-beta.tar.gz | tar -zx && \
34+ cd /tmp/modpagespeed-${PAGESPEED_VERSION} && \
35+ curl -L https://raw.githubusercontent.com/iler/alpine-nginx-pagespeed/master/patches/automatic_makefile.patch | patch -p1 && \
36+ curl -L https://raw.githubusercontent.com/iler/alpine-nginx-pagespeed/master/patches/libpng_cflags.patch | patch -p1 && \
37+ curl -L https://raw.githubusercontent.com/iler/alpine-nginx-pagespeed/master/patches/pthread_nonrecursive_np.patch | patch -p1 && \
38+ curl -L https://raw.githubusercontent.com/iler/alpine-nginx-pagespeed/master/patches/rename_c_symbols.patch | patch -p1 && \
39+ curl -L https://raw.githubusercontent.com/iler/alpine-nginx-pagespeed/master/patches/stack_trace_posix.patch | patch -p1 && \
40+ ./generate.sh -D use_system_libs=1 -D _GLIBCXX_USE_CXX11_ABI=0 -D use_system_icu=1 && \
41+ cd /tmp/modpagespeed-${PAGESPEED_VERSION}/src && \
42+ make BUILDTYPE=Release CXXFLAGS=" -I/usr/include/apr-1 -I/tmp/libpng-${LIBPNG_VERSION} -fPIC -D_GLIBCXX_USE_CXX11_ABI=0" CFLAGS=" -U_FORTIFY_SOURCE -I/usr/include/apr-1 -I/tmp/libpng-${LIBPNG_VERSION} -fPIC -D_GLIBCXX_USE_CXX11_ABI=0" && \
43+ cd /tmp/modpagespeed-${PAGESPEED_VERSION}/src/pagespeed/automatic/ && \
44+ make psol BUILDTYPE=Release CXXFLAGS=" -I/usr/include/apr-1 -I/tmp/libpng-${LIBPNG_VERSION} -fPIC -D_GLIBCXX_USE_CXX11_ABI=0" CFLAGS=" -U_FORTIFY_SOURCE -I/usr/include/apr-1 -I/tmp/libpng-${LIBPNG_VERSION} -fPIC -D_GLIBCXX_USE_CXX11_ABI=0" && \
45+ mkdir -p /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol && \
46+ mkdir -p /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/lib/Release/linux/x64 && \
47+ mkdir -p /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/out/Release && \
48+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/out/Release/obj /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/out/Release/ && \
49+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/net /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/ && \
50+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/testing /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/ && \
51+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/pagespeed /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/ && \
52+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/third_party /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/ && \
53+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/tools /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/include/ && \
54+ cp -r /tmp/modpagespeed-${PAGESPEED_VERSION}/src/pagespeed/automatic/pagespeed_automatic.a /tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta/psol/lib/Release/linux/x64 && \
55+ # Build Nginx with support for PageSpeed:
56+ # Check http://nginx.org/en/download.html for the latest version.
57+ NGINX_VERSION=1.11.13 && \
58+ cd /tmp && \
59+ curl -L http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz | tar -zx && \
60+ cd /tmp/nginx-${NGINX_VERSION} && \
61+ LD_LIBRARY_PATH=/tmp/modpagespeed-${PAGESPEED_VERSION}/usr/lib ./configure --with-ipv6 \
62+ --prefix=/var/lib/nginx \
63+ --sbin-path=/usr/sbin \
64+ --modules-path=/usr/lib/nginx \
65+ --with-http_ssl_module \
66+ --with-http_gzip_static_module \
67+ --with-file-aio \
68+ --with-http_v2_module \
69+ --without-http_autoindex_module \
70+ --without-http_browser_module \
71+ --without-http_geo_module \
72+ --without-http_map_module \
73+ --without-http_memcached_module \
74+ --without-http_userid_module \
75+ --without-mail_pop3_module \
76+ --without-mail_imap_module \
77+ --without-mail_smtp_module \
78+ --without-http_split_clients_module \
79+ --without-http_scgi_module \
80+ --without-http_referer_module \
81+ --without-http_upstream_ip_hash_module \
82+ --prefix=/etc/nginx \
83+ --conf-path=/etc/nginx/nginx.conf \
84+ --http-log-path=/var/log/nginx/access.log \
85+ --error-log-path=/var/log/nginx/error.log \
86+ --pid-path=/var/run/nginx.pid \
87+ --add-module=/tmp/ngx_pagespeed-${PAGESPEED_VERSION}-beta \
88+ --with-cc-opt="-fPIC -I /usr/include/apr-1" \
89+ --with-ld-opt="-luuid -lapr-1 -laprutil-1 -licudata -licuuc -L/tmp/modpagespeed-${PAGESPEED_VERSION}/usr/lib -lpng12 -lturbojpeg -ljpeg" && \
90+ make install --silent && \
91+ # Clean-up:
92+ cd && \
93+ apk del .build-deps && \
94+ rm -rf /tmp/* && \
95+ # forward request and error logs to docker log collector
96+ ln -sf /dev/stdout /var/log/nginx/access.log && \
97+ ln -sf /dev/stderr /var/log/nginx/error.log && \
98+ # Make PageSpeed cache writabl:
99+ mkdir -p /var/cache/ngx_pagespeed && \
100+ chmod -R o+wr /var/cache/ngx_pagespeed
101+
102+ EXPOSE 80 443
103+
104+ CMD ["nginx" , "-g" , "daemon off;" ]
0 commit comments