如何在docker run中实现环境变量替换并在剩余的环境变量中相对使用一个变量

时间:2020-08-08 11:44:19

标签: docker docker-compose environment-variables

请建议我如何定义一个环境变量,并在其他环境变量中相对引用它。我了解ARG & ENV中有一种docker-compose方法。但是,如何使用docker run实现它。还是我必须在每个env变量中明确声明它?我尝试了谷歌搜索,但没有运气。所有方法都指向dockerfile。

示例:

cloud_user@vijaygharge1c:~/Downloads$ docker run -itd --rm -e ELK_VERSION=7.8.0 -e ES_VERSION="${ELK_VERSION}"  --name "test" phusion/baseimage:18.04-1.0.0
2cd77b32f1b4336b18d7b5e0b342c37a2110832264d545d02668fe2b365ae2ae
cloud_user@vijaygharge1c:~/Downloads$ docker exec test env | grep VERSION
ELK_VERSION=7.8.0
ES_VERSION=
cloud_user@vijaygharge1c:~/Downloads$ 
cloud_user@vijaygharge1c:~/Downloads$ docker -v
Docker version 19.03.12, build 48a66213fe
cloud_user@vijaygharge1c:~/Downloads$ 

1 个答案:

答案 0 :(得分:1)

如果先前未定义ES_VERSION,则您尝试执行的操作不可能。

如果您先前定义,则有可能:

export ELK_VERSION=7.8.0
docker run -itd --rm -e ELK_VERSION=${ELK_VERSION} -e ES_VERSION="${ELK_VERSION}"  --name "test" phusion/baseimage:18.04-1.0.0

另一种可能性是在.env中为您的docker-compose.yml定义ELK_VERSION。