docker run“--env-file”提供的文件未按预期评估的解决方法

2024-02-20

我当前运行 docker 容器的设置如下:

  1. 我有一个main.env file:

# Main
export PRIVATE_IP=\`echo localhost\`
export MONGODB_HOST="$PRIVATE_IP"
export MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"  
  1. 在我的服务文件(暴发户)中,我获取了这个文件. /path/to/main.env

  2. 然后我打电话docker run与多个-e对于我想要在容器内的每个环境变量。在这种情况下,我会这样称呼:docker run -e MONGODB_URL=$MONGODB_URL ubuntu bash

  3. 然后我会期望MONGODB_URL容器内部等于mongodb://localhost:27017/development。请注意,现实中echo localhost被替换为curl到亚马逊的 api 获取实际的PRIVATE_IP.

当您开始需要为容器提供越来越多的环境变量时,这会变得有点笨拙。这里有一个很好看的点就是环境变量需要解析在运行时,例如致电curl或通过引用其他环境变量。

我希望使用的解决方案是:

  1. calling docker run--env-file参数比如这样:

# Main
PRIVATE_IP=\`echo localhost\`
MONGODB_HOST="$PRIVATE_IP"
MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"  
  1. Then my docker run命令将大大缩短为docker run --env-file=/path/to/main.env ubuntu bash(请记住,通常我有大约 12-15 个环境变量。

这就是我遇到问题的地方,即容器内没有任何变量按预期解析。相反,我最终得到:

  • PRIVATE_IP=`回显本地主机`
  • MONGODB_HOST="$PRIVATE_IP"
  • MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"

我可以通过执行以下操作来规避此问题:

  1. 采购main.env file.
  2. 创建一个仅包含我想要的变量名称的文件(这意味着 docker 将在环境中搜索它们)。
  3. 然后打电话docker run将此文件作为参数--env-file。这可行,但意味着我需要维护两个文件而不是一个,而且对当前情况来说确实不会有太大的改善。

我更希望让变量按预期解析。

我能找到的最接近我的问题是:Docker 的 12factor 配置方法 https://stackoverflow.com/questions/25177402/12factor-config-approach-with-docker


所以我也遇到了这个问题,为我解决的是我指定了 --env-file 或 -e KEY=VALbefore容器镜像的名称。例如

Broken:

docker run my-image --env-file .env

Fixed:

docker run --env-file .env my-image
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker run“--env-file”提供的文件未按预期评估的解决方法 的相关文章

随机推荐

  • 角度测试台覆盖模块不工作

    当对测试夹具使用以下配置时 我收到关于找不到标签的抱怨 替换为MockSelectionToolComponent直接在AppModule工作正常 所以一定是别的东西 Add the imported module to the impor
  • MySQL服务器消失了

    我在 MySql 服务器上执行此查询 它给出了 MySQL 服务器已消失 错误 在下面的查询中 我的两个表都有超过 1000000 行 SELECT a tab 11 10 url as url a tab 11 10 c5 as t1 a
  • 如何比较两个雄辩的集合并从另一个集合中删除其中的内容?

    我有所有门的集合 以及当前用户有权访问的门的集合 如何比较两者并从所有门集合中删除用户已有权访问的门 doors Door orderBy name asc gt get users doors user gt doors 这是两个集合 U
  • 删除或禁用 RAP/RCP EditorPart 上显示的“X”关闭按钮

    我正在开发一个显示 ViewPart 和 EditorPart 的 RAP 应用程序 我试图找到一种方法来防止 所有 编辑器部分关闭 有没有办法删除或禁用 编辑器部分显示的 X 关闭按钮 你可以这样做 我写的大致相同 例如 http wik
  • 如何启用即席分布式查询

    当我运行查询时OPENROWSET在 SQL Server 2000 中它可以工作 但 SQL Server 2008 中的相同查询会生成以下错误 SQL Server 阻止了对组件 临时分布式查询 的语句 OpenRowset OpenD
  • 动态 Telerik RadOutlookBar 标题与 ItemTemplate 出现错误

    我正在尝试以 MVVM 方式使用 Telerik RadControls 但遇到了一些奇怪的问题 RadOutlookBar 背后的 Viewmodel 有一个 ViewModel 集合 每个 ViewModel 都有一个 Title 字符
  • 如何播放本地文件中的音频?

    我想播放下载的本地音频文件 但它不播放 class AVPlayerService static let instance AVPlayerService private var audioPlayer AVPlayer public we
  • 是否有 CGPath 的替代方案可以计算给定位置路径上的点?

    对于动画计时算法 我需要提供一条路径作为曲线 可能是两端都有控制点的贝塞尔曲线 问题是似乎不可能计算 CGPath 上的点 因为 CGPathRef 是不透明的 Apple 也没有提供计算路径上的点的机制 是否有一个库或实用程序类可以计算贝
  • 招摇错误:schemaIds 冲突:检测到类型 A 和 B 的重复 schemaIds

    使用Web API并使用swashbuckle生成swagger文档 我在两个不同的命名空间中定义了两个具有相同名称的不同类 当我在浏览器中打开 swagger 页面时 它显示 schemaId 冲突 检测到类型 A 和 B 的 schem
  • React.js:非 CSS 动画

    反应文档 http facebook github io react docs 没有任何关于处理非 CSS 过渡的动画 例如滚动位置和 SVG 属性的动画 至于 CSS 过渡 有一个附加组件 http facebook github io
  • 如果不断增加访问内存超过 malloc() 分配的大小,linux glibc 中会发生什么[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 似乎评论 答案只是停留在 C 标准描述上 让我们更深入地讨论具体的实现 我在其他讨论中看到以下代码 struct size t x char
  • 如何设置newAPIHadoopFile的分区数量?

    老人 SparkContext hadoopFile需要一个minPartitions参数 这是分区数量的提示 def hadoopFile K V path String inputFormatClass Class lt InputFo
  • 使用按钮检查 html 复选框

    我正在努力在 Google 上的任何地方寻找解决方案 也许我搜索错误 但我想我会来询问 StackOverflow 上永远值得信赖的成员 我想使用 html 按钮来选中 html 复选框 我不想使用该复选框纯粹是出于可访问性的原因 因为我正
  • 使用 Google API“写入”Google 电子表格时出错

    使用的代码 var values value1 value2 value3 var body values values gapi client sheets spreadsheets values update spreadsheetId
  • 三列 100% 高度 css 布局

    我真的很纠结这个布局的CSS 这是我的 html 代码 div div menu div div div div sidebar div div 我想要左 中 右三列 宽度分别为父级宽度的 25 60 和 15 并且全部扩展至父级 主列 的
  • Java:打破jtable中的焦点循环

    在我的 JTable 中 我想像在 Excel 中一样编辑所有相关单元格 我实现了 ENTER 停止编辑单元格并将焦点转移到下一个单元格 但是 当我在最后一个单元格中按 ENTER 时 焦点循环使我跳到第一个单元格 但我想继续在表之外并将焦
  • Django mysql 连接过多

    我将 Django 与 mysql 一起使用 并遇到连接过多的问题 我从命令行运行 python 脚本 但与 Django 模型集成以检查数据库中的数据 该脚本每 30 秒运行一次 我使用线程来控制它 My function 是检查数据库状
  • 将数据从宽变为长:基于列名称的新变量

    我想将数据集从宽格式重塑为长格式 该数据集包含 300 个变量 每个变量均按照以下原则命名 ModelID Emotion ModelGender 样本数据如下 df lt structure list X71 Anger Male str
  • 向后循环 python 字符串的最佳方法

    向后循环 python 字符串的最佳方法是什么 对于所有需要 1 偏移量的情况 以下内容似乎有点尴尬 string trick or treat for i in range len string 1 0 1 1 print string
  • docker run“--env-file”提供的文件未按预期评估的解决方法

    我当前运行 docker 容器的设置如下 我有一个main env file Main export PRIVATE IP echo localhost export MONGODB HOST PRIVATE IP export MONGO