首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >envsubst命令卡在容器中

envsubst命令卡在容器中
EN

Stack Overflow用户
提问于 2015-11-05 15:27:22
回答 4查看 26.6K关注 0票数 12

我有一个要求,在应用程序运行之前,它的某些部分需要读取环境变量。为此,我有下面的docker文件

代码语言:javascript
复制
FROM nodesource/jessie:0.12.7

# install gettext for envsubst
RUN apt-get update
RUN apt-get install -y gettext-base

# cache package.json and node_modules to speed up builds
ADD package.json package.json
RUN npm install

# Add  source files
ADD src src

# Substiture value for backend endpoint env var
RUN envsubst < src/js/envapp.js > src/js/app.js

ADD node_modules node_modules
EXPOSE 8000
CMD ["npm","start"]

上面的envsubst行读取(应该读取) env变量$MYENV并替换它。但是当我打开文件app.js时,它是空的。我检查了容器中是否存在环境变量,并且它确实存在。它的价值没有被读取和替换的原因吗?我还在teh容器中尝试了相同的命令,它可以工作。只有当我运行映像时,它才不能工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-05 17:48:08

这很可能是因为在运行映像时,$MYENVenvsubst不可用。

每个RUN命令都在自己的shell上运行。

来自码头工人的文件:

运行(命令以shell - /bin/sh -c - shell形式运行)

您还需要源配置文件,例如,如果$MYENV环境变量在.bashrc文件中可用,您可以像下面这样修改您的Dockerfile:

代码语言:javascript
复制
RUN source ~/.bashrc && envsubst < src/js/envapp.js > src/js/app.js
票数 9
EN

Stack Overflow用户

发布于 2020-09-04 19:09:09

我遇到了同样的问题,经过了大量的研究和通过互联网钓鱼。我设法找到了一些解决这个问题的方法。下面我将列出它们和可识别的风险,在这篇“回答文章”中

解决办法:

1. apt-get install -y gettext是一个标准的库,它包含的其中一个库是envsubst` `,我可以确认它对docker:apt-get install -y gettext是有效的,并且它应该适用于每个口味的版本。

2.依赖于“用例”的npm install envsub --基于节点的项目将更好地支持这种方法。

3. enstub cli project lib在我看来,从随机的陌生人那里下载自定义cli似乎有点过分了,但是,这也是另一种选择。

风险:

  • apt-获取安装-y gettext: 1. gettext --这种方法对于VM来说并不理想,因为任何软件包库都是如此,它需要随着时间的推移进行维护和更新。但是,对于docker来说,这并不是必需的,因为一旦一个容器被初始化、启动和运行,我们就可以创建一个bashscript来添加包,替换env,然后删除包。 2.)这对VM来说是个坏主意,因为它可以用来执行任意代码
  • npm安装ensub 1. envsub --如果您处理的是不同的堆栈而不是使用nodejs,那么更新包和这种方法就不太理想了。

注意到:对于那些开发PHP应用程序的人来说,它也有一个PHP版本,如果您需要一个自定义环境,它似乎可以使用PHP。

资源:

票数 6
EN

Stack Overflow用户

发布于 2017-03-01 02:29:30

我建议您使用Node,使用npm envsub模块。

这个模块经过了很好的测试,并且开发时考虑到了码头。

当您已经拥有完整的节点库时,它避免了依赖其他依赖项的需要。

envsub被描述为

envsub是NodeJS的envsubst NodeJS全局CLI模块通过工具栏提供文件级环境变量替换。

我是这个包裹的作者。我想你会喜欢的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33548530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档