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

Nat*_*amy 7 amazon-elb docker amazon-elastic-beanstalk docker-compose

我之前使用多容器 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"
  }
  ]
} 
Run Code Online (Sandbox Code Playgroud)

Nat*_*amy 3

只需创建 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:

Run Code Online (Sandbox Code Playgroud)

像这样