-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make COSMOVISOR_ENABLED and START_CMD work as intended #528
Make COSMOVISOR_ENABLED and START_CMD work as intended #528
Conversation
This is great @orenl-lava, but I think we need to tweak it slightly. The way it's setup now, We should remove the I can take a look at this if it's easier, let me know. |
Yes, that's a good point. I wonder if docker command args should take priority over START_CMD variable? If so, then "$@" -if set- should replace START_CMD altogether - also for COSMOVISOR_ENABLED and SNAPSHOT_PATH cases. Thus, it should check: "if args exists then use them, else if START_CMD exists then use it, else use "start"; And also check if cosmovisor (and?) or snapshot enabled, then prefix something to the former. Maybe something like:
and then
|
There are some intricacies here - the reason I added START_CMD is because the docker command is prefixed with Might require a bit of testing to make sure all the cases are covered. Would be nice to clean this up a bit though. Best case would be to get rid of START_CMD and just use the native command, if the prefix issue can be resolved. |
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.
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.
7edde33
to
6538e60
Compare
Unsure I follow what you mean by this. I think that users would want to:
Note that START_CMD is currently used by |
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.
@tombeynon - you are right, Docker adds And then, we will have the following cases:
In all cases, if snapshot/cosmovisor are selected, then I pushed another patch to implement this - please review. I need this fixed to be able to use cosmovisor. Note the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Direction is great, generally will be a cleaner implementation. But we need to be really careful not to break any of the existing ways this image is used.
I think the main test case you're missing is if no arguments are passed at all, i.e. no cmd override, no START_CMD set, and without snapshot.sh or cosmovisor.
Thanks for the feedback - I think it's ready now. |
@orenl-lava sorry for the delay - this is great as-is, I prefer the history but the repo is set to squash commits anyway. |
@PikachuEXE - I uploaded a fix in PR #572, can you please try it? |
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.