首页 > 解决方案 > 如何在 docker run 中实现环境变量替换并在剩余的环境变量中相对使用一个变量

问题描述

请建议我如何定义一个环境变量并在其他环境变量中相对引用它。我知道有ARG & ENV方法docker-compose。但是,我怎样才能使用docker run. 还是我必须在每个环境变量中明确声明它?我试过谷歌搜索,但没有运气。所有方法都指向 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$ 

标签: dockerdocker-composeenvironment-variables

解决方案


如果 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。


推荐阅读