amazon-web-services - 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中有什么?
解决方案
许多 Docker 镜像(例如 ruby)使用 /bin/sh 作为默认 shell。它使启用多行变量导出的 $'string' 表示法崩溃。因此,要使用 aws-env,需要将 shell 切换到 /bin/bash:
CMD ["/bin/bash", "-c", "eval $(aws-env) && rails s Puma"]
推荐阅读
- java - Spring Data r2dbc - 实体继承
- vb.net - vb.net 检测表单上的按键
- javascript - 如何将 THIS 关键字用于在 JQUERY 中没有操作的函数
- c - 检查 NULL 返回分段错误
- docker - docker compose 延迟容器构建和启动
- c - 颜色一个单元格ncurses
- sql - 简单人车示例的关系模型查询
- java - 有问题的框架:#C [zip.dll+0xa714](JVM 崩溃,因为 EXCEPTION_ACCESS_VIOLATION)
- django - 没有序列化程序的 Django 分页
- typescript - 使用 keyof 提取仅具有特定类型值的键的字符串文字联合