【问题标题】:Passing aws credentials as windows ENV variables to dockerfile将 aws 凭据作为 windows ENV 变量传递给 dockerfile
【发布时间】:2020-07-08 07:51:02
【问题描述】:

我有一个 django 项目,我正尝试在 aws 中部署,我正在使用参数存储来存储我的密钥,所以我需要传递 aws 凭据和区域,否则每次我想要时都会出错要创建缺少 aws 凭据的 docker 映像,我尝试使用 setx variable value 将这些凭据作为 Windows env 变量传递,当我在 cmd 上运行 echo %variable% 时,我能够获得正确的值,我添加了这个到docker文件

ENV AWS_ACCESS_KEY_ID ${AWS_ACCESS_KEY_ID}
ENV AWS_SECRET_ACCESS_KEY ${AWS_SECRET_ACCESS_KEY}
ENV AWS_DEFAULT_REGION ${AWS_DEFAULT_REGION}

我总是遇到同样的错误,所以我添加了这个 cmd 来打印创建图像时容器中的变量

Run printenv

我得到的逻辑输出是三个变量是空的,所以我假设 docker 文件没有访问这些变量,我不知道这是否是权限问题,或者是否有人得到了与我相同的错误,

我也将这些值传递给 docker-compose 文件

    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}

但是 dockerfile 在这两种情况下都没有获取变量值。

非常感谢任何帮助。

【问题讨论】:

  • 如何构建或运行容器?以及为什么在可以使用角色的情况下需要容器中的 AWS 密钥?
  • 我正在使用 docker-compose up -d 构建容器,我该如何使用角色?

标签: django amazon-web-services docker


【解决方案1】:

首先,如果您在 AWS 环境中工作,应避免使用AWS keys,最好根据您的要求分配role to the instance


RUN printenv 将打印环境变量,如果它在构建期间设置,所以最好不要选择这个选项,因为在 Docker 映像中保留密钥确实有风险。

在运行时设置 ENV。

将所有环境变量.env 文件放在简单的docker-compose up 中不会设置环境变量,除非您将其放在点env 中或在主机中导出。

├── docker-compose.yml
├── Dockerfile
└── .env

.env 会像

AWS_ACCESS_KEY_ID=mykey
AWS_SECRET_ACCESS_KEY=mysecret

现在,一切准备就绪,可以打印和验证 ENV

version: '3'
services:
  node:
    image: node:alpine
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
    command: sh -c "node -e 'console.log(process.env)'"

输出应该是这样的

Attaching to set-env-docker-compose-build_node_1
node_1  | {
node_1  |   NODE_VERSION: '12.10.0',
node_1  |   HOSTNAME: '644ba6300f6b',
node_1  |   YARN_VERSION: '1.17.3',
node_1  |   SHLVL: '2',
node_1  |   HOME: '/root',
node_1  |   AWS_DEFAULT_REGION: '',
node_1  |   PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
node_1  |   AWS_ACCESS_KEY_ID: 'SOME_KEY',
node_1  |   AWS_SECRET_ACCESS_KEY: 'SOME_SECRET',
node_1  |   PWD: '/'
node_1  | }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2018-04-27
    • 2018-01-08
    相关资源
    最近更新 更多