问题
背景
docker-compose.yml
使用各种环境变量的文件,例如db密码。我们正在使用
.env
文件来存储此变量,因此可以在从命令行部署后启动/重新启动容器,而无需访问gitlab。
deploy:
script:
#...
- cp docker-compose.development.yml {$DEPLOY_TO_PATH}/docker-compose.yml
- env > variables.env
- docker-compose up -d
#...
以及
文件如下所示:
version: "3"
services:
project:
image: some/image
env_file:
- variables.env
...
现在的问题是
.环境
文件包含gitlab变量和hosts系统环境变量,并在结果中
PATH变量被覆盖
.
我开发了一个解决方法
grep
:
env | grep -Pv "^PATH" > variables.env
它允许我们暂时保持这个功能,但我认为问题可能会再次影响到我们,因为另一个变量将在容器内和主机系统上设置为不同的值。
我知道我可以列出docker compose和类似文件中的所有变量,但我们在一些项目中已经有相当多的变量,所以这不是一个解决方案。