在我的docker compose文件中,有一个动态字段,我想在运行期间生成。实际上它是一个字符串模板:
environment:
- SERVER_URL:https://0.0.0.0:${PORT}
我想动态配置此PORT
参数
docker-compose run <service> PORT=443
在documentation中设置了ARGS
参数,我想我可以使用。但是没有信息我怎么能在compose文件中使用那些
答案 0 :(得分:12)
在docker-compose中,参数仅在dockerfile
中可用且有用。您可以在下面的级别中指定您正在执行的操作,如下所示:
#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"
您的端口可以在docker-compose.yml中设置:
build:
context: .
args:
- PORT=443
在任何情况下,它实际上都是一个环境变量。如果适合你,你可以通过你的运行命令传递它:
PORT=443 docker-compose run <service>
#or
docker-compose run <service> -e PORT=443
答案 1 :(得分:10)
使用docker-compose build时可以使用该标志
docker-compose build --build-arg PRODUCTION=VALUE
在Dockerfile中,您可以获取参数PRODUCTION
# Dockerfile
ARG PRODUCTION
FROM node:latest
答案 2 :(得分:2)
请参阅此answer。您可以这样操作:PORT=433 docker-compose <command>
您甚至可以提供多个值:PORT=433 MYIP='192.168.123.456' docker-compose <command>
答案 3 :(得分:0)
可以使用stack deploy
示例撰写环境部分中的文件:
- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}
Stack Deploy Command(我在Windows中从Gitbash运行):
MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname
<强>参考强> 请参阅此Github帖子here