如何将命令行选项发送到我的“docker-compose up”开始的dockerized程序?

时间:2015-04-19 11:57:36

标签: ubuntu docker fig docker-compose

我正在尝试使用docker-compose up docker run [APP_CONTAINER_NAME] [APP_OPTIONS]的方式。

3 个答案:

答案 0 :(得分:3)

Docker Compose的重点在于您不必记住所有命令行开关。

如果您想更改不同上下文的环境变量,我建议您为Compose创建一个基本common.yml文件。然后,您可以为每个不同的上下文创建一个新的yml文件,并使用common.yml指令从extends文件继承。然后,您可以使用-f标记docker compose来切换上下文。

另请注意,如果您只是更改yml中的变量,Compose不应该“重建”任何内容,并且如果更适合您,则可以将外部文件用于环境变量。

答案 1 :(得分:2)

docker run定义为:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

docker compose run定义为:

docker-compose run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

在这两种情况下,最终ARGS(可能是OP问题的&#34; APP_OPTIONS&#34;)将被传递给容器命令。< / p>

请注意,某些docker run选项可以在docker-compose run中使用(谎言-d,以运行容器命令分离),但不能全部使用。

答案 2 :(得分:2)

您需要查看Dockerfile并查看处理APP_OPTIONS的内容。有可能ENTRYPOINT采用选项标志。在这种情况下,请使用

指定要发送到入口点的命令
command: [-flag1, -flag2]

这是有效的,因为当指定了两者时,Dockerfile中的COMMAND作为入口点的默认参数https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/