Я хочу создать Docker Image, которое будет исполняться как исполняемый файл, для которого пользователь передает токен в качестве переменной среды. Исполняемый файл имеет вспомогательные команды, которые пользователь должен передать через докеры CMD (подумайте о git с проверкой подлинности через Env). Однако Docker не добавляет CMD к точке входа. Соответствующая часть моего Dockerfile выглядит так:
ENTRYPOINT ["/bin/sh", "-c", "/usr/bin/mycmd --token=$MY_TOKEN"]
CMD ["pull", "stuff"]
Итак, если этот контейнер выполняется без каких-либо переопределений CMD и secret
в качестве переменной MY_TOKEN, я ожидал бы
mycmd --token=secret pull stuff
для выполнения. Если пользователь запускает контейнер с переопределением, например
docker run -it -e MY_TOKEN=secret myimage push junk
Я ожидал бы
mycmd --token=secret push junk
для выполнения. Как упоминалось выше, однако, выполняется только mycmd --token=secret
, CMD игнорируется - независимо от того, переопределяю ли я его во время запуска или устанавливаю его в файле Docker.