From 97cfc97c908a38fb92eb62df8eded9421d470d76 Mon Sep 17 00:00:00 2001 From: James Lu Date: Sun, 23 Feb 2020 22:27:22 -0800 Subject: [PATCH] Make building contrib modules an option & use multi-stage builds --- Dockerfile | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5bc8e93..391e7dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,42 +1,46 @@ -FROM alpine:3.11 - -ARG ATHEME_VERSION=7.2.10-r2 -ARG CONFIGURE_ARGS=--enable-contrib ARG ATHEME_UID=10000 +ARG ATHEME_VERSION=7.2.10-r2 +ARG BUILD_CONTRIB_MODULES= -RUN adduser -D -h /atheme -u $ATHEME_UID atheme +FROM alpine:latest AS builder +ARG ATHEME_VERSION +ARG BUILD_CONTRIB_MODULES RUN mkdir /atheme-src -# Install build-deps -RUN apk add --no-cache --virtual .build-deps \ +# Install build-deps and runtime deps +RUN apk add --no-cache \ build-base \ pkgconf \ openssl-dev \ - # Used by contrib/gen_echoserver.so - libexecinfo-dev \ git -# Runtime deps -RUN apk add openssl libexecinfo + +# libexecinfo is used by contrib/gen_echoserver +RUN test -z "$BUILD_CONTRIB_MODULES" || apk add --no-cache libexecinfo-dev # Checkout from Git - we need to manually bump the libmowgli snapshot to fix compilation against musl # This will be fixed when 7.3 releases -RUN git clone https://github.com/atheme/atheme -b v${ATHEME_VERSION} atheme-src --recursive -RUN cd /atheme-src/libmowgli-2 && git pull origin master +RUN git clone https://github.com/atheme/atheme -b v${ATHEME_VERSION} --depth=1 atheme-src --recursive +RUN cd /atheme-src/libmowgli-2 && \ + git pull origin master # Configure and build RUN cd /atheme-src && \ - ./configure --prefix=/atheme $CONFIGURE_ARGS -RUN cd /atheme-src && \ + ./configure --prefix=/atheme $(test -z "$BUILD_CONTRIB_MODULES" || echo --enable-contrib) && \ make -j$(nproc) && make install -# Remove source dir and build deps -RUN rm -rf /atheme-src && apk del .build-deps +FROM alpine:latest +ARG ATHEME_UID +ARG BUILD_CONTRIB_MODULES + +RUN apk add --no-cache openssl && (test -z "$BUILD_CONTRIB_MODULES" || apk add --no-cache libexecinfo) + +COPY --from=builder /atheme/ /atheme +RUN adduser -D -h /atheme -u $ATHEME_UID atheme RUN chown -R atheme /atheme USER atheme -# Services config + +# Services config & DB VOLUME /atheme/etc -# Services DB -VOLUME /atheme/var ENTRYPOINT ["/atheme/bin/atheme-services", "-n"]