mirror of https://github.com/waku-org/nwaku.git
75 lines
2.4 KiB
Docker
75 lines
2.4 KiB
Docker
# BUILD NIM APP ----------------------------------------------------------------
|
|
FROM rust:1.77.1-alpine3.18 AS nim-build
|
|
|
|
ARG NIMFLAGS
|
|
ARG MAKE_TARGET=liteprotocoltester
|
|
ARG NIM_COMMIT
|
|
ARG LOG_LEVEL=TRACE
|
|
|
|
# Get build tools and required header files
|
|
RUN apk add --no-cache bash git build-base openssl-dev pcre-dev linux-headers curl jq
|
|
|
|
WORKDIR /app
|
|
COPY . .
|
|
|
|
# workaround for alpine issue: https://github.com/alpinelinux/docker-alpine/issues/383
|
|
RUN apk update && apk upgrade
|
|
|
|
# Ran separately from 'make' to avoid re-doing
|
|
RUN git submodule update --init --recursive
|
|
|
|
# Slowest build step for the sake of caching layers
|
|
RUN make -j$(nproc) deps QUICK_AND_DIRTY_COMPILER=1 ${NIM_COMMIT}
|
|
|
|
# Build the final node binary
|
|
RUN make -j$(nproc) ${NIM_COMMIT} $MAKE_TARGET LOG_LEVEL=${LOG_LEVEL} NIMFLAGS="${NIMFLAGS}"
|
|
|
|
|
|
# REFERENCE IMAGE as BASE for specialized PRODUCTION IMAGES----------------------------------------
|
|
FROM alpine:3.18 AS base_lpt
|
|
|
|
ARG MAKE_TARGET=liteprotocoltester
|
|
|
|
LABEL maintainer="zoltan@status.im"
|
|
LABEL source="https://github.com/waku-org/nwaku"
|
|
LABEL description="Lite Protocol Tester: Waku light-client"
|
|
LABEL commit="unknown"
|
|
LABEL version="unknown"
|
|
|
|
# DevP2P, LibP2P, and JSON RPC ports
|
|
EXPOSE 30303 60000 8545
|
|
|
|
# Referenced in the binary
|
|
RUN apk add --no-cache libgcc pcre-dev libpq-dev \
|
|
wget \
|
|
iproute2 \
|
|
python3
|
|
|
|
# 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/liteprotocoltester /usr/bin/
|
|
RUN chmod +x /usr/bin/liteprotocoltester
|
|
|
|
# Standalone image to be used manually and in lpt-runner -------------------------------------------
|
|
FROM base_lpt AS standalone_lpt
|
|
|
|
COPY --from=nim-build /app/apps/liteprotocoltester/run_tester_node.sh /usr/bin/
|
|
RUN chmod +x /usr/bin/run_tester_node.sh
|
|
|
|
ENTRYPOINT ["/usr/bin/run_tester_node.sh", "/usr/bin/liteprotocoltester"]
|
|
|
|
# Image for infra deployment -------------------------------------------
|
|
FROM base_lpt AS deployment_lpt
|
|
|
|
# let supervisor python script flush logs immediately
|
|
ENV PYTHONUNBUFFERED="1"
|
|
|
|
COPY --from=nim-build /app/apps/liteprotocoltester/run_tester_node_at_infra.sh /usr/bin/
|
|
COPY --from=nim-build /app/apps/liteprotocoltester/infra.env /usr/bin/
|
|
COPY --from=nim-build /app/apps/liteprotocoltester/lpt_supervisor.py /usr/bin/
|
|
RUN chmod +x /usr/bin/run_tester_node_at_infra.sh
|
|
RUN chmod +x /usr/bin/lpt_supervisor.py
|
|
|
|
ENTRYPOINT ["/usr/bin/lpt_supervisor.py"]
|