我正在尝试为 docker-compose 和 swarm 使用相同的 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/