【问题标题】:Add environment variable to ECS host将环境变量添加到 ECS 主机
【发布时间】:2018-02-09 21:53:03
【问题描述】:

我正在尝试在托管 ECS 容器的 EC2 实例中设置环境变量。 EC2 实例上的 docker 客户端在运行时应该可以读取环境变量。我知道可以像这样添加 userData:

#!/bin/sh
echo export env_var=1 >> /etc/environment

但由于某种原因,在实例化 ECS 任务时,docker 客户端没有拾取这个 env_var。

知道我该怎么做吗?提前致谢。

【问题讨论】:

    标签: amazon-web-services docker amazon-ecs notary


    【解决方案1】:

    您只是添加环境变量吗?那就试试下面的

    1. 在 Dockerfile 中添加变量

      ARG 开发

      环境开发=${DEV}

    2. 构建docker镜像时添加变量

      码头工人建造。 -t 项目名 --build-arg DEV=False

    【讨论】:

    • 感谢您的建议。我希望 ECS docker 客户端在从 ECR 提取图像时获取主机环境变量,例如 here。或者,另一种解决方案是在 ECS docker 客户端运行 docker pull 时传递 --disable-content-trust=false 标志。
    【解决方案2】:

    您可以使用 Docker 的 --env 选项从任务定义中定义将传递到您的容器中的环境变量。 Advanced Container Definition Parameters(向下滚动到“环境”)

    "environment" : [
        { "name" : "string", "value" : "string" },
        { "name" : "string", "value" : "string" }
    ]
    

    下面是它在完整任务定义中的外观的快速示例:

    {
        "family": "example-task",
        "containerDefinitions": [
            {
                "name": "sample-app",
                "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1",
                "memory": 200,
                "cpu": 10,
                "essential": true,
                "environment": [
                    {
                        "name": "ENVIRONMENT",
                        "value": "production"
                    },
                    {
                        "name": "API_HOST",
                        "value": "https://example.com"
                    }
                ],
            }
        ]
    }
    

    【讨论】:

    • 感谢@John 的建议,但我正在尝试将标志传递给运行 ECS 容器(我假设是 docker)的容器守护进程。不运行容器
    猜你喜欢
    • 2020-12-28
    • 2019-08-17
    • 2019-12-17
    • 2014-12-17
    • 2020-10-07
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多