考虑以下示例:
Dockerfile
FROM ubuntu
ENV var=hello
ENTRYPOINT ["printenv"]
这个容器有一个带有默认值的环境变量,我可以覆盖它:
docker build -t exp .
docker run exp
...
var=hello
...
docker run -e var=lalala exp
...
var=lalala
...
我希望在使用docker-compose时,能够具有这种可选的覆盖性。到目前为止,我尝试了以下三种方法:
强制覆盖 - 否则变量未设置
docker-compose.yml
version: "3.1"
services:
hello-teller:
image: exp:latest
environment:
- var
结果:
docker-compose up
var
未设置,忽略默认值。
env var=lala docker-compose up
var
被覆盖。
铭记于心
docker-compose.yml
version: "3.1"
services:
hello-teller:
image: exp:latest
environment:
- var=lala
结果:
docker-compose up
var
被覆盖为lala
。
env var=huhu docker-compose up
var
仍被覆盖为lala
。
没有效果
docker-compose.yml
version: "3.1"
services:
hello-teller:
image: exp:latest
environment:
- ${var:-lala}
结果:
docker-compose up
var
没有被覆盖。
env var=huhu docker-compose up
var
没有被覆盖。