docker - 如何将我放在 .env 文件中的变量传递到我的 docker swarm 中的容器?

标签 docker docker-compose environment-variables docker-swarm docker-stack

我正在尝试为 docker-composeswarm 使用相同的 docker-compose.yml.env 文件.env 文件中的变量应该通过 sed 在引导时运行 run.sh 脚本来解析到配置文件中。使用 docker-compose up 时此设置工作正常命令,但是当我使用 docker stack deploy 时它们没有被传递命令。

如何将变量传递到容器中,以便 run.sh 脚本在启动时解析它们?

最佳答案

加载 .env 文件是 docker-compose 的一项功能,它不是 docker CLI 的一部分。在执行部署之前,您可以在 shell 中手动加载此文件的内容:

set -a; . ./.env; set +a
docker stack deploy -c docker-compose.yml stack_name

其他选项包括使用 docker-compose 预处理撰写文件:

docker-compose config >docker-compose.processed.yml

或者您可以使用 envsubst 来替换变量,以使用已经展开的变量制作一个 compose 文件:

set -a; . ./.env; set +a
envsubst <docker-compose.yml >docker-compose.processed.yml

关于docker - 如何将我放在 .env 文件中的变量传递到我的 docker swarm 中的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58666953/

相关文章:

docker - 将文件复制或scp到/var/lib/boot2docker以便由docker-machine管理的boot2docker VM

docker - 从容器A直接将一个文件或目录卷安装到容器B

go - 在Go项目中访问静态文件

environment-variables - 您可以在 fluentd 的配置文件中使用环境变量吗

laravel - 将应用程序从宅基地移至Docker

java - Wasabi自动重启docker容器

Docker 查看历史日志

python - docker-compose up : utf-8 codec can't decode byte X

javascript - Node/Express 中的环境变量到底是什么?

amazon-web-services - 如何为AWS Lambda创建和压缩Docker容器