docker - 如何在 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$
解决方案
如果 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。
推荐阅读
- asp.net-core - 从 .netCore Web 应用程序项目中读取类库项目的程序集版本
- git - git config 设置自动创建同名远程分支
- z3 - 在 Solverfor("QF_LIA") 中使用超时选项时出错
- ios - 如何在长按时取消选择 UITableViewCell?
- node.js - Node.JS、Express 和 MongoDB Atlas:: 多个集合 ejs
- http - 从 Postman 生成 cURL 请求
- r - 增加 image.plot 图例中的字体大小
- php - 如何划分数组的每个元素
- node.js - Dialogflow - 在给定延迟后添加后续事件
- javascript - 需要获取所有子组件实例的所有值并在parents方法中使用:ReactJS