如何将带有 --config 选项的 docker 运行 应用到 docker compose
How do I apply a docker run with --config option to docker compose
我有以下 docker 命令:
sudo docker run --env-file env.list \
-p 80:8080 \
-v $PWD/snowplow/config:/snowplow/config \
snowplow/scala-stream-collector-kinesis:1.0.0 \
--config /snowplow/config/config.hocon
我正在尝试将其移动到 docker-compose.yml
文件中,但我遇到了 --config 选项的问题。我的文件看起来像这样,谁能看出我哪里出错了:
version: '3.3'
services:
collector:
image: snowplow/scala-stream-collector-kinesis:1.0.0
environment:
- AWS_CBOR_DISABLE=1
ports:
- "80:8080"
volumes:
- ./data/snowplow:/snowplow
configs:
- source: collectorcnf
target: /snowplow/config/config.hocon
configs:
collectorcnf:
file: ./data/snowplow/config/config.hocon
我已经相应地移动了配置文件以匹配。我在 sudo docker-compose up
上收到的错误消息是:
collector_1 | Error: Missing option --config
collector_1 | Try --help for more information.
collector_1 | configuration has no "collector" path
显然,带有 docker
命令的 --config
和 docker-compose
中的 configs
指向两个不同的东西。
compose文件中的configs
选项用于docker config
,用于设置服务配置。查看更多详细信息 here。这与 docker swarm
和 运行 宁 docker 服务很好地配合。
另一方面,--config
选项专门用于 docker 客户端配置,即 .docker
目录下的文件。更多详情 here.
注意:我明白为什么这个命名超级混乱了。当您 运行 docker-compose up
和 configs
时发出警告,提示 configs
- 以下摘录(基于您的 collector
标签):
WARNING: Some services (collector) use the 'configs' key, which will be ignored. Compose does not support 'configs' configuration - use `docker stack deploy` to deploy to a swarm.
图像名称后出现的所有内容都将覆盖图像默认命令。所以你想要:
version: '3.3'
services:
collector:
image: snowplow/scala-stream-collector-kinesis:1.0.0
# the below "command" is the portion after the image name in the run command:
command: ["--config", "/snowplow/config/config.hocon"]
environment:
- AWS_CBOR_DISABLE=1
ports:
- "80:8080"
volumes:
- ./data/snowplow:/snowplow
当图像定义了入口点时,命令会附加在入口点之后,成为命令的参数。使用 json 格式很重要,可以避免将其包装在 /bin/sh -c "..."
语法中。
我有以下 docker 命令:
sudo docker run --env-file env.list \
-p 80:8080 \
-v $PWD/snowplow/config:/snowplow/config \
snowplow/scala-stream-collector-kinesis:1.0.0 \
--config /snowplow/config/config.hocon
我正在尝试将其移动到 docker-compose.yml
文件中,但我遇到了 --config 选项的问题。我的文件看起来像这样,谁能看出我哪里出错了:
version: '3.3'
services:
collector:
image: snowplow/scala-stream-collector-kinesis:1.0.0
environment:
- AWS_CBOR_DISABLE=1
ports:
- "80:8080"
volumes:
- ./data/snowplow:/snowplow
configs:
- source: collectorcnf
target: /snowplow/config/config.hocon
configs:
collectorcnf:
file: ./data/snowplow/config/config.hocon
我已经相应地移动了配置文件以匹配。我在 sudo docker-compose up
上收到的错误消息是:
collector_1 | Error: Missing option --config
collector_1 | Try --help for more information.
collector_1 | configuration has no "collector" path
显然,带有 docker
命令的 --config
和 docker-compose
中的 configs
指向两个不同的东西。
compose文件中的configs
选项用于docker config
,用于设置服务配置。查看更多详细信息 here。这与 docker swarm
和 运行 宁 docker 服务很好地配合。
另一方面,--config
选项专门用于 docker 客户端配置,即 .docker
目录下的文件。更多详情 here.
注意:我明白为什么这个命名超级混乱了。当您 运行 docker-compose up
和 configs
时发出警告,提示 configs
- 以下摘录(基于您的 collector
标签):
WARNING: Some services (collector) use the 'configs' key, which will be ignored. Compose does not support 'configs' configuration - use `docker stack deploy` to deploy to a swarm.
图像名称后出现的所有内容都将覆盖图像默认命令。所以你想要:
version: '3.3'
services:
collector:
image: snowplow/scala-stream-collector-kinesis:1.0.0
# the below "command" is the portion after the image name in the run command:
command: ["--config", "/snowplow/config/config.hocon"]
environment:
- AWS_CBOR_DISABLE=1
ports:
- "80:8080"
volumes:
- ./data/snowplow:/snowplow
当图像定义了入口点时,命令会附加在入口点之后,成为命令的参数。使用 json 格式很重要,可以避免将其包装在 /bin/sh -c "..."
语法中。