Simple script for use as entrypoint to a container.
Attempts to intelligently decide if a command is an argument to an application or calling as system command. In other words, it is intended to allow all the following use cases:
$ docker run --rm foo --version
foo 0.8
$ docker run --rm foo echo boo
boo
$ docker run -it foo sh
/ #
/ # exit
To use the script, set it as the ENTRYPOINT in a Dockerfile or equivalent, making sure it is
executable. Also set the environment variable BASE_COMMAND
appropriately. For example:
$ docker run --rm -e BASE_COMMAND="uname" my_image -a
Linux f3c6b322e73a 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 Linux
We've used -e
for the purposes of this demo, but the variable should be set in the Dockerfile or
by editing the script.
This script is based on the NodeJS entrypoint script.