我在docker-compose上遇到了非常奇怪的行为。我有一个配置为与docker swarm
进行生产并与docker-compose
进行开发的仓库。 Swarm在生产中工作正常,但是docker-compose
的行为异常。
具体来说,我正在用参数替换定义构建参数,就像这样
build:
context: .
args:
- APP_DIRECTORY=${APP_DIRECTORY:-/srv/app}
- APP_ENV=${APP_ENV:-dev}
未定义APP_ENV
或为空时,其值应为dev
。正常工作,但是现在在未定义变量时采用值prod
。我重新启动,清除了所有环境变量,甚至删除了docker-compose
并再次安装了它,而APP_ENV
仍在受到prod
的攻击。是否有一些我不知道的compose缓存?
另一个奇怪的行为是docker-compose
将与代理相关的环境变量传递给了容器。这些变量未在撰写文件中指定,甚至在主机上也不存在。同样,是否发生了一些麻烦的缓存?为什么docker-compose
将我不要求的env变量传递给容器?
答案 0 :(得分:1)
我犯了一个令人震惊的错误,我在同一目录中有一个.env
文件,而docker-compose
从文件中读取变量。