From 726f7326405848940ec4679a211a22a3f9dee3a4 Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Thu, 15 Sep 2022 18:26:32 -0400 Subject: [PATCH] fix(build): a path must exist before creating a file in it (#5177) * fix(build): a path must exist before creating a file in it Other directories in the Dockerfile were automatically created with the `WORKDIR` and `COPY` commands. In this case it has to be explicitly created * fix(build): use a variable for the conf path and another for the file Add some pending actions to consider, for a better user experience. * fix(runtime): run with the correct path --- docker/Dockerfile | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index eabecba1..16281827 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -139,11 +139,21 @@ RUN apt-get update && \ ARG CHECKPOINT_SYNC=true ARG NETWORK=Mainnet -ARG ZEBRA_CONF_PATH=/etc/zebra/zebrad.toml +# Use a configurable dir and file for the zebrad configuration file +ARG ZEBRA_CONF_PATH=/etc/zebra ENV ZEBRA_CONF_PATH ${ZEBRA_CONF_PATH} +ARG ZEBRA_CONF_FILE=zebrad.toml +ENV ZEBRA_CONF_FILE ${ZEBRA_CONF_FILE} + # Build the `zebrad.toml` before starting the container, using the arguments from build -# time, or using the default values set just above. +# time, or using the default values set just above. And create the conf path and file if +# it does not exist +# +# TODO: move this file creation to an entrypoint as we can use default values at runtime, +# and modify those as needed when starting the container (at runtime and not at build time) +RUN mkdir -p ${ZEBRA_CONF_PATH} \ + && touch ${ZEBRA_CONF_PATH}/${ZEBRA_CONF_FILE} RUN set -ex; \ { \ echo "[consensus]"; \ @@ -156,7 +166,7 @@ RUN set -ex; \ echo "cache_dir = '/zebrad-cache'"; \ echo "[tracing]"; \ echo "endpoint_addr = '0.0.0.0:3000'"; \ - } > "${ZEBRA_CONF_PATH}" + } > "${ZEBRA_CONF_PATH}/${ZEBRA_CONF_FILE}" EXPOSE 3000 8233 18233 @@ -166,4 +176,5 @@ ENV SHORT_SHA $SHORT_SHA ARG SENTRY_DSN ENV SENTRY_DSN ${SENTRY_DSN} -CMD [ "zebrad", "-c", "${ZEBRA_CONF_PATH}", "start" ] +# TODO: remove the specified config file location and use the default expected by zebrad +CMD [ "zebrad", "-c", "${ZEBRA_CONF_PATH}/${ZEBRA_CONF_FILE}", "start" ]