ced02f1821
Stable from 1.14.0 to 1.14.1 Mainline from 1.15.5 to 1.15.6
236 lines
7.8 KiB
Docker
236 lines
7.8 KiB
Docker
ARG ALPINE_VERSION=edge
|
|
|
|
########################
|
|
# Build pagespeed psol #
|
|
########################
|
|
FROM alpine:$ALPINE_VERSION as pagespeed
|
|
|
|
# Check https://github.com/apache/incubator-pagespeed-mod/tags
|
|
ARG MOD_PAGESPEED_TAG=v1.13.35.2
|
|
|
|
RUN apk add --no-cache \
|
|
apache2-dev \
|
|
apr-dev \
|
|
apr-util-dev \
|
|
build-base \
|
|
curl \
|
|
gettext-dev \
|
|
git \
|
|
gperf \
|
|
icu-dev \
|
|
libjpeg-turbo-dev \
|
|
libpng-dev \
|
|
libressl-dev \
|
|
pcre-dev \
|
|
py-setuptools \
|
|
zlib-dev \
|
|
;
|
|
|
|
WORKDIR /usr/src
|
|
RUN git clone -b ${MOD_PAGESPEED_TAG} \
|
|
--recurse-submodules \
|
|
--depth=1 \
|
|
-c advice.detachedHead=false \
|
|
-j`nproc` \
|
|
https://github.com/apache/incubator-pagespeed-mod.git \
|
|
modpagespeed \
|
|
;
|
|
|
|
WORKDIR /usr/src/modpagespeed
|
|
|
|
COPY patches/modpagespeed/*.patch ./
|
|
|
|
RUN for i in *.patch; do printf "\r\nApplying patch ${i%%.*}\r\n"; patch -p1 < $i || exit 1; done
|
|
|
|
WORKDIR /usr/src/modpagespeed/tools/gyp
|
|
RUN ./setup.py install
|
|
|
|
WORKDIR /usr/src/modpagespeed
|
|
|
|
RUN build/gyp_chromium --depth=. \
|
|
-D use_system_libs=1 \
|
|
&& \
|
|
cd /usr/src/modpagespeed/pagespeed/automatic && \
|
|
make psol BUILDTYPE=Release \
|
|
CFLAGS+="-I/usr/include/apr-1" \
|
|
CXXFLAGS+="-I/usr/include/apr-1 -DUCHAR_TYPE=uint16_t" \
|
|
-j`nproc` \
|
|
;
|
|
|
|
RUN mkdir -p /usr/src/ngxpagespeed/psol/lib/Release/linux/x64 && \
|
|
mkdir -p /usr/src/ngxpagespeed/psol/include/out/Release && \
|
|
cp -R out/Release/obj /usr/src/ngxpagespeed/psol/include/out/Release/ && \
|
|
cp -R pagespeed/automatic/pagespeed_automatic.a /usr/src/ngxpagespeed/psol/lib/Release/linux/x64/ && \
|
|
cp -R net \
|
|
pagespeed \
|
|
testing \
|
|
third_party \
|
|
url \
|
|
/usr/src/ngxpagespeed/psol/include/ \
|
|
;
|
|
|
|
|
|
##########################################
|
|
# Build Nginx with support for PageSpeed #
|
|
##########################################
|
|
FROM alpine:$ALPINE_VERSION AS nginx
|
|
|
|
# Check https://github.com/apache/incubator-pagespeed-ngx/tags
|
|
ARG NGX_PAGESPEED_TAG=v1.13.35.2-stable
|
|
|
|
# Check http://nginx.org/en/download.html for the latest version.
|
|
ARG NGINX_VERSION=1.14.1
|
|
ARG NGINX_PGPKEY=520A9993A1C052F8
|
|
ARG NGINX_BUILD_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 \
|
|
"
|
|
|
|
RUN apk add --no-cache \
|
|
apr-dev \
|
|
apr-util-dev \
|
|
build-base \
|
|
ca-certificates \
|
|
gd-dev \
|
|
geoip-dev \
|
|
git \
|
|
gnupg \
|
|
icu-dev \
|
|
libjpeg-turbo-dev \
|
|
libpng-dev \
|
|
libxslt-dev \
|
|
linux-headers \
|
|
libressl-dev \
|
|
pcre-dev \
|
|
tar \
|
|
zlib-dev \
|
|
;
|
|
|
|
WORKDIR /usr/src
|
|
RUN git clone -b ${NGX_PAGESPEED_TAG} \
|
|
--recurse-submodules \
|
|
--shallow-submodules \
|
|
--depth=1 \
|
|
-c advice.detachedHead=false \
|
|
-j`nproc` \
|
|
https://github.com/apache/incubator-pagespeed-ngx.git \
|
|
ngxpagespeed \
|
|
;
|
|
|
|
RUN wget https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
|
|
https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz.asc && \
|
|
(gpg --keyserver ha.pool.sks-keyservers.net --keyserver-options timeout=10 --recv-keys ${NGINX_PGPKEY} || \
|
|
gpg --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options timeout=10 --recv-keys ${NGINX_PGPKEY} || \
|
|
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --keyserver-options timeout=10 --recv-keys $NGINX_PGPKEY} ) && \
|
|
gpg --trusted-key ${NGINX_PGPKEY} --verify nginx-${NGINX_VERSION}.tar.gz.asc
|
|
|
|
COPY --from=pagespeed /usr/src/ngxpagespeed /usr/src/ngxpagespeed/
|
|
|
|
WORKDIR /usr/src/nginx
|
|
|
|
RUN tar zxf ../nginx-${NGINX_VERSION}.tar.gz --strip-components=1 -C .
|
|
|
|
COPY patches/ngx/*.patch ./
|
|
|
|
RUN for i in *.patch; do printf "\r\nApplying patch ${i%%.*}\r\n"; patch -p1 < $i || exit 1; done
|
|
|
|
RUN ./configure \
|
|
${NGINX_BUILD_CONFIG} \
|
|
--add-module=/usr/src/ngxpagespeed \
|
|
--with-ld-opt="-Wl,-z,relro,--start-group -lapr-1 -laprutil-1 -licudata -licuuc -lpng -lturbojpeg -ljpeg" \
|
|
&& \
|
|
make install -j`nproc`
|
|
|
|
RUN rm -rf /etc/nginx/html/ && \
|
|
mkdir /etc/nginx/conf.d/ && \
|
|
mkdir -p /usr/share/nginx/html/ && \
|
|
sed -i 's|^</body>|<p><a href="https://www.ngxpagespeed.com/"><img src="pagespeed.png" title="Nginx module for rewriting web pages to reduce latency and bandwidth" /></a></p>\n</body>|' html/index.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* \
|
|
/usr/lib/nginx/modules/*.so \
|
|
;
|
|
|
|
COPY conf/nginx.conf /etc/nginx/nginx.conf
|
|
COPY conf/nginx.vh.default.conf /etc/nginx/conf.d/default.conf
|
|
COPY pagespeed.png /usr/share/nginx/html/
|
|
|
|
|
|
##########################################
|
|
# Combine everything with minimal layers #
|
|
##########################################
|
|
FROM alpine:$ALPINE_VERSION
|
|
LABEL maintainer="Nico Berlee <nico.berlee@on2it.net>" \
|
|
version.mod-pagespeed="1.13.35.2" \
|
|
version.nginx="1.14.1" \
|
|
version.ngx-pagespeed="1.13.35.2"
|
|
|
|
COPY --from=pagespeed /usr/bin/envsubst /usr/local/bin
|
|
COPY --from=nginx /usr/sbin/nginx /usr/sbin/nginx
|
|
COPY --from=nginx /usr/lib/nginx/modules/ /usr/lib/nginx/modules/
|
|
COPY --from=nginx /etc/nginx /etc/nginx
|
|
COPY --from=nginx /usr/share/nginx/html/ /usr/share/nginx/html/
|
|
|
|
RUN apk --no-cache upgrade && \
|
|
scanelf --needed --nobanner --format '%n#p' /usr/sbin/nginx /usr/lib/nginx/modules/*.so /usr/local/bin/envsubst \
|
|
| tr ',' '\n' \
|
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
|
| xargs apk add --no-cache \
|
|
&& \
|
|
apk add --no-cache tzdata
|
|
|
|
RUN addgroup -S nginx && \
|
|
adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx && \
|
|
install -g nginx -o nginx -d /var/cache/ngx_pagespeed && \
|
|
mkdir -p /var/log/nginx && \
|
|
ln -sf /dev/stdout /var/log/nginx/access.log && \
|
|
ln -sf /dev/stderr /var/log/nginx/error.log
|
|
|
|
EXPOSE 80
|
|
|
|
STOPSIGNAL SIGTERM
|
|
|
|
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
|