diff --git a/Dockerfile b/Dockerfile index fe92eb715..eb4579497 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ # BUILD IMAGE -------------------------------------------------------- -FROM alpine:3.11 AS nim-build + +FROM alpine:3.12 AS nim-build ARG NIM_PARAMS ARG MAKE_TARGET=wakunode @@ -7,24 +8,30 @@ ARG MAKE_TARGET=wakunode # Get build tools and required header files RUN apk add --no-cache bash build-base pcre-dev linux-headers git -RUN mkdir /app WORKDIR /app -ADD . . +COPY . . # Ran separately from 'make' to avoid re-doing RUN git submodule update --init --recursive -# Build the node binary -RUN make -j$(nproc) ${MAKE_TARGET} NIM_PARAMS="${NIM_PARAMS}" +# Slowest build step for the sake of caching layers +RUN make -j$(nproc) deps + +# Build the final node binary +RUN make -j$(nproc) $MAKE_TARGET NIM_PARAMS="$NIM_PARAMS" # ACTUAL IMAGE ------------------------------------------------------- -FROM alpine:3.11 + +FROM alpine:3.12 + +ARG MAKE_TARGET=wakunode LABEL maintainer="jakub@status.im" LABEL source="https://github.com/status-im/nim-waku" LABEL description="Wakunode: Waku and Whisper client" -EXPOSE 1234 +# DevP2P, LibP2P, and JSON RPC ports +EXPOSE 30303 60000 8545 # Referenced in the binary RUN apk add --no-cache libgcc pcre-dev @@ -32,7 +39,11 @@ RUN apk add --no-cache libgcc pcre-dev # Fix for 'Error loading shared library libpcre.so.3: No such file or directory' RUN ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3 -COPY --from=nim-build /app/build/${MAKE_TARGET} /usr/bin/wakunode +# Copy to separate location to accomodate different MAKE_TARGET values +COPY --from=nim-build /app/build/$MAKE_TARGET /usr/local/bin/ + +# Symlink the correct wakunode binary +RUN ln -sv /usr/local/bin/$MAKE_TARGET /usr/bin/wakunode ENTRYPOINT ["/usr/bin/wakunode"] # By default just show help if called without arguments