Introduce a proper multi-stage dockerfile

This commit is contained in:
Piotr Wójcik 2023-05-26 15:42:15 +02:00
commit 7d34852cc7

View file

@ -1,37 +1,32 @@
ARG ENV_REPOSITORY=nanocurrency/nano-env
ARG COMPILER=gcc
FROM ${ENV_REPOSITORY}:${COMPILER}
FROM ubuntu:22.04 as builder
ARG NETWORK=live
ARG COMPILER=gcc
ARG NANO_NETWORK=live
ARG CI_TAG=DEV_BUILD
ARG CI_BUILD=OFF
ARG CI_VERSION_PRE_RELEASE=OFF
ADD ./ /tmp/src
WORKDIR /tmp/build
# Install build dependencies
COPY ./ci/prepare/linux /tmp/prepare
RUN /tmp/prepare/prepare.sh
RUN \
cmake /tmp/src \
-DCI_BUILD=${CI_BUILD} \
-DCI_VERSION_PRE_RELEASE=${CI_VERSION_PRE_RELEASE} \
-DPORTABLE=1 \
-DACTIVE_NETWORK=nano_${NETWORK}_network
COPY ./ /tmp/src
WORKDIR /tmp/src
RUN \
make nano_node -j $(nproc) && \
make nano_rpc -j $(nproc) && \
cd .. && \
echo ${NETWORK} >/etc/nano-network
# Build node
RUN ci/build-node.sh
RUN echo ${NETWORK} >/etc/nano-network
FROM ubuntu:22.04
RUN groupadd --gid 1000 nanocurrency && \
useradd --uid 1000 --gid nanocurrency --shell /bin/bash --create-home nanocurrency
COPY --from=0 /tmp/build/nano_node /usr/bin
COPY --from=0 /tmp/build/nano_rpc /usr/bin
COPY --from=0 /tmp/src/api/ /usr/bin/api/
COPY --from=0 /etc/nano-network /etc
COPY --from=builder /tmp/src/build/nano_node /usr/bin
COPY --from=builder /tmp/src/build/nano_rpc /usr/bin
COPY --from=builder /tmp/src/api/ /usr/bin/api/
COPY --from=builder /etc/nano-network /etc
COPY docker/node/entry.sh /usr/bin/entry.sh
COPY docker/node/config /usr/share/nano/config
RUN chmod +x /usr/bin/entry.sh
@ -44,5 +39,6 @@ USER root
ENV PATH="${PATH}:/usr/bin"
ENTRYPOINT ["/usr/bin/entry.sh"]
CMD ["nano_node", "daemon", "-l"]
ARG REPOSITORY=nanocurrency/nano-node
LABEL org.opencontainers.image.source https://github.com/$REPOSITORY