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

Posted

技术标签:

【中文标题】如何为新的 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? 【发布时间】:2021-09-22 19:48:01 【问题描述】:

我之前使用 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"
  
  ]
 

【问题讨论】:

【参考方案1】:

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

这样

【讨论】:

【参考方案2】:

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

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

如果您要从私有容器注册表中提取图像,则需要附加 Dockerrun.json v3 到 configure credentials for pulling images。

【讨论】:

以上是关于如何为新的 Docker Amazon Linux 2 平台将 Dockerrun.json v2 转换为 Dockerrun.json v3?的主要内容,如果未能解决你的问题,请参考以下文章

如何为在 64 位 Amazon Linux 2 上运行的 Elastic Beanstalk Python 3.7 项目安装节点包?

如何为在 docker 容器内运行的 corda 节点运行迁移脚本?

如何为 Amazon IAP 设置 ProGuard?

如何为 Amazon CloudFront 签署 RTMP URL

如何为Amazon IAP设置ProGuard?

如何为 IP 地址设置 Amazon S3 策略