diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index adcdf1f5191b64146834f742fdb24b0124ead3df..ea9a503432f9ef966f25417160a8780e77abc7ed 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -36,6 +36,10 @@ services: - DUNITER_WS2P_REMOTE_HOST=${DUNITER_WS2P_REMOTE_HOST:-duniter.localhost} - DUNITER_WS2P_REMOTE_PATH=${DUNITER_WS2P_REMOTE_PATH:-ws2p} - DUNITER_WS2P_REMOTE_PORT=${DUNITER_WS2P_REMOTE_PORT:-443} + healthcheck: + test: "code=$$(echo -e 'GET / HTTP/1.0\n' |nc -w 1 localhost 10901 | awk 'NR == 1 {print $$2}') && [ \"$$code\" = \"200\" ] && echo \"OK\" || exit 1" + timeout: 3s + retries: 0 image: ${DOCKER_REPOSITORY:-duniter}/duniter:${DOCKER_IMAGE_TAG:-latest} networks: - private diff --git a/docker/duniter/Dockerfile b/docker/duniter/Dockerfile index cd63a3bfd281b8ea2dc50b955d5f1d7c8928bf2a..946728745e7b9b310f46d0b2435ca840e2367f52 100644 --- a/docker/duniter/Dockerfile +++ b/docker/duniter/Dockerfile @@ -2,24 +2,25 @@ # Build Stage # ------------------------------------------------------------------------------ -FROM node:10-alpine as build +FROM alpine:latest as build -LABEL maintainer="elois <elois@duniter.org>" -LABEL version="0.1.0" -LABEL description="Duniter server (Crypto-currency software to manage libre currency such as Ğ1)" +LABEL description Duniter server (Crypto-currency software to manage libre currency such as Ğ1) +LABEL maintainer aynic.os <support+docker@asycn.io> +LABEL version 0.1.1 ARG DUNITER_UI_VER="1.7.x" ARG INSTALL_DEX="no" -RUN apk update && \ - apk add ca-certificates curl && \ - update-ca-certificates && \ - apk add --update cmake g++ python make +# install node, npm and yarn +COPY --from=node:10-alpine /usr/local/bin/ /usr/local/bin/ +COPY --from=node:10-alpine /usr/local/lib/node_modules/ /usr/local/lib/node_modules/ +COPY --from=node:10-alpine /opt/ /opt/ -WORKDIR /duniter +# install rust from repository as armv7 is not supported by `curl https://sh.rustup.rs -sSf | sh -s -- -y` +# rustup: installer for platform 'armv7-unknown-linux-musleabihf' not found, this may be unsupported +RUN apk add cmake g++ make python3 rust cargo -# install latest stable rust -RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +WORKDIR /duniter # copy source tree COPY Cargo.* LICENSE *.json *.md *.toml *.ts *.txt ./ @@ -36,26 +37,31 @@ COPY test ./test # build duniter RUN PATH=${HOME}/.cargo/bin:${PATH} \ - RUSTFLAGS="-C target-feature=-crt-static -L/usr/lib" \ - make -C release ADD_DEBUG=N INSTALL_DEX=${INSTALL_DEX} server-gui clean \ - && rm -rf work/extra + RUSTFLAGS="-C target-feature=-crt-static -L/usr/lib" \ + make -C release ADD_DEBUG=N INSTALL_DEX=${INSTALL_DEX} server-gui clean \ + && rm -rf work/extra # ------------------------------------------------------------------------------ # Final Stage # ------------------------------------------------------------------------------ -FROM node:10-alpine +FROM alpine:latest ARG DOCKER_BUILD_DIR=docker/duniter ARG INSTALL_DEX="no" +# install node, npm and yarn +COPY --from=node:10-alpine /usr/local/bin/ /usr/local/bin/ +COPY --from=node:10-alpine /usr/local/lib/node_modules/ /usr/local/lib/node_modules/ +COPY --from=node:10-alpine /opt/ /opt/ + # install jq -RUN apk add jq +RUN apk add jq libstdc++ # create group and user duniter -RUN addgroup -S -g 1111 duniter && \ - adduser -SD -h /duniter -G duniter -u 1111 duniter -RUN mkdir -p /var/lib/duniter /etc/duniter && chown duniter:duniter /var/lib/duniter /etc/duniter +RUN addgroup -S -g 1111 duniter \ + && adduser -SD -h /duniter -G duniter -u 1111 duniter \ + && mkdir -p /var/lib/duniter /etc/duniter && chown duniter:duniter /var/lib/duniter /etc/duniter # copy the build artifact from the build stage COPY --from=build --chown=duniter:duniter /duniter/work /duniter @@ -79,7 +85,5 @@ EXPOSE 9220 10901 20901 30901 USER duniter WORKDIR /var/lib/duniter -ENTRYPOINT ["/docker-entrypoint.sh"] -HEALTHCHECK CMD code=$(echo -e 'GET / HTTP/1.0\n' |nc -w 1 localhost 10901 | awk 'NR == 1 {print $2}') \ - && [ "$code" = "200" ] && echo "OK" || exit 1 CMD [] +ENTRYPOINT ["/docker-entrypoint.sh"]