首页 > 解决方案 > AWS 参数存储中的环境变量的值以 $ 为前缀,这不是预期的

问题描述

我在 AWS(系统管理器)的参数存储下定义了一个 env 变量列表,并且正在使用下面的 dockerfile,并且正在使用https://github.com/Droplr/aws-env来处理环境变量。

FROM node:6-wheezy
COPY . /src
WORKDIR /src
RUN npm install pm2 -g
RUN npm install
RUN wget https://github.com/Droplr/aws-env/raw/master/bin/aws-env-linux-amd64 -O /bin/aws-env && \ chmod +x /bin/aws-env
VOLUME ["/var/logs"]
EXPOSE 8080
CMD eval $(aws-env) && pm2 start app.js -i 1 --name servicename --no-daemon

由于某些原因,在使用 (process.env) 的应用程序内部使用时,所有环境变量的值都以 $ 符号为前缀

我哪里出错了?dockerfile中有什么?

标签: amazon-web-servicesdockerdockerfile

解决方案


许多 Docker 镜像(例如 ruby​​)使用 /bin/sh 作为默认 shell。它使启用多行变量导出的 $'string' 表示法崩溃。因此,要使用 aws-env,需要将 shell 切换到 /bin/bash:

     CMD ["/bin/bash", "-c", "eval $(aws-env) && rails s Puma"]

推荐阅读