Docker 在多容器 Elastic Beanstalk 中编写 env_file

Posted

技术标签:

【中文标题】Docker 在多容器 Elastic Beanstalk 中编写 env_file【英文标题】:Docker Compose env_file in Multicontainer Elastic Beanstalk 【发布时间】:2017-07-04 10:13:24 【问题描述】:

我有以下 docker compose 文件:

version: '2'

services:
  app:
    build: .
    command: >
      bash -cex "
        export LC_ALL=C.UTF-8
        export LANG=C.UTF-8
        /virtualenv/bin/flask run -h 0.0.0.0 -p 5050
      "
    env_file: env
    links:
    - postgres
    ports:
    - 8080:8080

如您所见,我正在使用 env_file 选项从文件 env 加载我的环境变量。

现在我正在尝试将此容器部署到 Elastic Beanstalk。 到目前为止,这是我的文件 Dockerrun.aws.json:


  "AWSEBDockerrunVersion": 2,

  "containerDefinitions": [

    
      "name": "app",
      "image": "myorg/myimage",
      "essential": true,
      "memory": 256,
      "command": [
        "/bin/bash",
        "export LC_ALL=C.UTF-8",
        "export LANG=C.UTF-8",
        "/virtualenv/bin/flask run -h 0.0.0.0 -p 5050"
      ],
      "portMappings": [
        
          "hostPort": 8080,
          "containerPort": 8080
        
      ],
      "links": [
        "postgres",
      ]
    

在 AWS Elastic Beanstalk documentation 中仅提及 environment 选项以传递一组 env 变量,但我找不到如何传递文件而不是变量数组。

有人知道如何将这个 docker-compose 文件正确翻译成 Dockerrun.aws.json 文件吗?

问候。

【问题讨论】:

【参考方案1】:

试试container-transform。

$ pip install container-transform
$ cat docker-compose.yml | container-transform  -v

它会将 ECS 格式打印到 STDOUT。

【讨论】:

以上是关于Docker 在多容器 Elastic Beanstalk 中编写 env_file的主要内容,如果未能解决你的问题,请参考以下文章

使用 Dockerrun.aws.json 和 Elastic Beanstalk 命名 Docker 容器

如何在 Elastic Beanstalk 应用程序中的 Docker 容器之间共享卷?

AWS Elastic Beanstalk - 多容器 Docker

Elastic Beanstalk 多容器 Docker 环境变量

Amazon Elastic Beanstalk 中的错误 Docker 部署 - Docker 容器意外退出

将 Perl Docker 容器部署到 Elastic Beanstalk