如何为新的 Docker Amazon Linux 2 平台将 Dockerrun.json v2 转换为 Dockerrun.json v3?

How to convert Dockerrun.json v2 to Dockerrun.json v3 for new Docker Amazon Linux 2 Platform?

我之前将多容器 docker 与 Dockerrun.json v2 一起使用。但现在它已被弃用。 AWS 推荐 Docker Amazon Linux 2 Platform。但它需要Dockerrun.json v3。那么如何从 v2 迁移到 v3 呢?还是直接用docker-compose.yml,还是需要用Dockerrun.json v1。 [有多个容器]。

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [{
    "environment": [{
      "name": "POSTGRES_USER",
      "value": "admin"
    },
      {
        "name": "POSTGRES_PASSWORD",
        "value": "postgres"
      },
      {
        "name": "POSTGRES_DB",
        "value": "somedb"
      }
    ],
    "essential": true,
    "image": "postgres:12-alpine",
    "memory": 300,
    "mountPoints": [{
      "containerPath": "/var/lib/postgresql/data/",
      "sourceVolume": "postgres_data"
    }],
    "name": "db",
    "portMappings": [{
      "containerPort": 5432,
      "hostPort": 5432
    }]
  },
    {
      "essential": true,
      "links": [
        "db"
      ],
      "name": "web",
      "image": "****.dkr.ecr.ap-south-1.amazonaws.com/someimage:latest",
      "memory": 300,
      "portMappings": [{
        "containerPort": 80,
        "hostPort": 80
      }]
    }
  ],
  "volumes": [{
    "host": {
      "sourcePath": "postgres_data"
    },
    "name": "postgres_data"
  }
  ]
} 

Amazon Linux 2 Docker platform 中,docker-compose.yml 替换 Dockerrun.json 用于配置您的应用程序服务。

如果您在源包中为 Amazon Linux 2 Docker 平台提供正确配置的 docker-compose.yml 并拉取图像,则不需要 Dockerrun.json 文件来自 Elasticbeanstalk 应用程序可访问的 public 个注册表或 ECR 存储库。

如果您从私有容器注册表中提取镜像,则需要从中获取 额外的 Dockerrun.json v3configure credentials for pulling images

只需创建 docker-compose.yml,不要尝试在 docker-compose.yml 中构建映像。将所有图像推送到 ECR,然后在 docker compose 中参考。

version: '3'
services:
  web:
    image: ****.dkr.ecr.ap-south-1.amazonaws.com/abc:latest
    ports:
      - "80:80"
    links:
      - db
  db:
    image: postgres:12-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=***db
    ports:
      - "5432:5432"

volumes:
  postgres_data:

像这样