Skip to content

Commit

Permalink
Make COSMOVISOR_ENABLED and START_CMD work as intended (#528)
Browse files Browse the repository at this point in the history
* Make COSMOVISOR_ENABLED and START_CMD work as intended

Teach the run.sh to use START_CMD if set, even when SNAPSHOT_PATH is unused
(previously, it would exec whatever command line passed to the docker, or do
nothing if none).

This also fixes the case of COSMOVISOR_ENABLED=1, which sets START_CMD to
start cosmovisor but then was not actually run before.

* Make COSMOVISOR_ENABLED and START_CMD work as intended (take 2)

Users generally want to:

1. Run the blockchain binary either as-is, -or- with snapshot.sh, -or- with
cosmovisor. These are controlled `SNAPSHOT_PATH`, and `COSMOVISOR_ENABLED`.

and then:

2. Be able to set the blockchain binary command to something else than the
default "start". This can be done with `START_CMD` - to amend/override that
command via environment variables without changes to deployment logic - e.g.
docker-compose yml (unlike with command line args to "docker run ...").

So change the logic to be: "use rule 1 above for prefix, then if args exists
then use them, else if `START_CMD` exists then use it, else use `start`". I
amended the PR accordingly.

* Make COSMOVISOR_ENABLED and START_CMD work as intended (take 3)

With the "CMD $START_CMD" directive ("shell form") docker starts the container
with "$ENTRYPOINT /bin/sh -c $START_CMD". This is bad because it breaks both
cosmovisor and snapshot.sh (the latter has an explicit workaround). It is also
unnecessary because the $START_CMD can (and should) be enforced by `run.sh`.

Remove "CMD $START_CMD", since it is passed in the env and handled anyhow by
`run.sh`. Replace with "CMD []" to un-inherit any "CMD" directives from parent
images.

* Default command for run.sh should be '$PROJECT_BIN start'
  • Loading branch information
orenl-lava authored Jul 10, 2023
1 parent fcb8d1e commit 3aacc34
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
3 changes: 1 addition & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -199,5 +199,4 @@ RUN curl -L https://github.com/storj/storj/releases/latest/download/uplink_linux
COPY run.sh snapshot.sh /usr/bin/
RUN chmod +x /usr/bin/run.sh /usr/bin/snapshot.sh
ENTRYPOINT ["run.sh"]

CMD $START_CMD
CMD []
14 changes: 9 additions & 5 deletions run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ export PROJECT_BIN="${PROJECT_BIN:-$PROJECT}"
export PROJECT_DIR="${PROJECT_DIR:-.$PROJECT_BIN}"
export CONFIG_DIR="${CONFIG_DIR:-config}"
if [ "$COSMOVISOR_ENABLED" == "1" ]; then
export START_CMD="${START_CMD:-cosmovisor run start}"
PREFIX_CMD="cosmovisor run"
elif [ -n "$SNAPSHOT_PATH" ]; then
PREFIX_CMD="snapshot.sh"
else
export START_CMD="${START_CMD:-$PROJECT_BIN start}"
PREFIX_CMD=
fi
export PROJECT_ROOT="/root/$PROJECT_DIR"
export CONFIG_PATH="${CONFIG_PATH:-$PROJECT_ROOT/$CONFIG_DIR}"
Expand Down Expand Up @@ -351,8 +353,10 @@ if [[ ! -f "$PROJECT_ROOT/data/priv_validator_state.json" ]]; then
echo '{"height":"0","round":0,"step":0}' > "$PROJECT_ROOT/data/priv_validator_state.json"
fi

if [ -n "$SNAPSHOT_PATH" ]; then
exec snapshot.sh "$START_CMD"
if [ "$#" -ne 0 ]; then
exec $PREFIX_CMD "$@"
elif [ -n "$START_CMD" ]; then
exec $PREFIX_CMD $START_CMD
else
exec "$@"
exec $PREFIX_CMD $PROJECT_BIN start
fi

0 comments on commit 3aacc34

Please sign in to comment.