gpt4 book ai didi

docker - envsubst 命令卡在容器中

转载 作者:IT老高 更新时间:2023-10-28 21:37:17 29 4
gpt4 key购买 nike

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

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 时,它是空的。我检查了容器中是否存在环境变量,并且确实存在。有什么理由不读取和替换它的值?我还在容器中尝试了相同的命令并且它有效。只有当我运行图像时它才不起作用

最佳答案

这可能是因为运行镜像时 $MYENV 不适用于 envsubst

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

来自 Docker 文档:

RUN (the command is run in a shell - /bin/sh -c - shell form)

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

RUN source ~/.bashrc && envsubst < src/js/envapp.js > src/js/app.js

关于docker - envsubst 命令卡在容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548530/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com