使用变量替换在docker中部署堆栈
我试图使用变量替换在docker中部署堆栈,但当我运行使用变量替换在docker中部署堆栈,docker,variables,environment-variables,Docker,Variables,Environment Variables,我试图使用变量替换在docker中部署堆栈,但当我运行docker stack deploy--compose file email.yaml email时,出现无效引用格式的错误。这是我的电子邮件。yaml: version: '3' services: emailservice: image: 'email:${VERSION}' deploy: replicas: 2 restart_policy: condition:
docker stack deploy--compose file email.yaml email
时,出现无效引用格式的错误。这是我的电子邮件。yaml:
version: '3'
services:
emailservice:
image: 'email:${VERSION}'
deploy:
replicas: 2
restart_policy:
condition: on-failure
resources:
limits:
memory: 300 MB
update_config:
delay: 12s
ports:
- "8000:80"
我尝试了电子邮件:${VERSION}
和电子邮件:${VERSION}
,但也不起作用
另一方面,我读到在docker stack deploy中,我不能使用.env文件传递变量。我该如何通过他们
谢谢 Docker Compose会自动加载
.env
文件,但Docker stack deploy
不会加载(请参阅Compose file reference一节中的注释)
您可以通过在与docker stack deploy相同的行中使用env VAR=VALUE
来解决此问题:
$ env VERSION=1.2 docker stack deploy -c email.yaml email
您使用的语法是正确的,但是由于缺少替换,导致了您看到的错误
或者,您可以使用${VERSION:?}
语法要求强制定义变量,这将停止部署并显示一个容易与缺少的变量相关的错误:
$ docker stack deploy -c email.yaml email
invalid interpolation format for services.emailservice.image: "required variable VERSION is missing a value: ". You may need to escape any $ with another $.
希望有帮助。Docker Compose会自动加载
.env
文件,但Docker stack deploy
不会(请参阅撰写文件参考部分中的注释)
您可以通过在与docker stack deploy相同的行中使用env VAR=VALUE
来解决此问题:
$ env VERSION=1.2 docker stack deploy -c email.yaml email
您使用的语法是正确的,但是由于缺少替换,导致了您看到的错误
或者,您可以使用${VERSION:?}
语法要求强制定义变量,这将停止部署并显示一个容易与缺少的变量相关的错误:
$ docker stack deploy -c email.yaml email
invalid interpolation format for services.emailservice.image: "required variable VERSION is missing a value: ". You may need to escape any $ with another $.
希望能有所帮助。有一个解决方案。
我也有同样的问题,我能找到的最好的解决办法来自于
建议的解决方法使用docker compose config
生成docker-compose.yml输出(使用变量替换):
这是一个开放的平台。
我也有同样的问题,我能找到的最好的解决办法来自于
建议的解决方法使用docker compose config
生成docker-compose.yml输出(使用变量替换):
默认情况下,docker stack deploy不处理.env文件。这是一个docker compose功能。您可以在一行中对其进行预处理
docker stack deploy -c <(docker-compose config) stack-name-here
默认情况下,docker stack deploy-cdocker stack deploy不处理.env文件。这是一个docker compose功能。您可以在一行中对其进行预处理
docker stack deploy -c <(docker-compose config) stack-name-here
docker stack deploy-c此回复应为可接受的回复。使用docker compose config
和管道调用docker stack deploy
真是一件乐事!这个答复应该是可以接受的。使用docker compose config
和管道调用docker stack deploy
真是一件乐事!