docker-compose 运行环境变量不存在

时间:2021-04-21 15:10:34

标签: docker docker-compose

你知道为什么 docker run 和 docker-compose run 中环境变量的行为处理方式不同吗?

在使用 docker-compose exec 命令运行 docker-compose 后查看容器时,我找不到运行命令“env”的已定义环境变量。

$ a="test hello" docker-compose run -d app
$ docker-compose exec app
/code env
# HOSTNAME=ce1b4934lkj
# HOME=/

我认为只要容器在运行,环境变量就可用。

使用 docker run 和 docker exec 运行相同的测试,我得到了预期的结果。

$ docker run --env a=tst --name alpy -dit alpine
$ docker exec -it alpy env
# a=tst
# HOME=/root

编辑

如果我使用 docker-compose run 语法,env 变量将写入容器。但我不明白为什么我在随后的 exec 命令中无法再看到这个环境变量。我在同一个容器中执行这个命令。

$ docker-compose run -e another=var -d app env
# /code env & exit
# another=var

$ docker-compose exec app
/code env
# HOSTNAME=ce1b4934lkj
# HOME=/

0 个答案:

没有答案