我似乎无法理解 Dockerrun.aws.json 文件,该文件是在 AWS Elastic Beanstalk 上运行多容器 docker 环境所必需的。
当我通过 Docker-Compose 运行我的应用程序时,一切都在本地运行良好。以下是我的 docker-compose.yml 文件:
version: '2'
services:
interfaceserver:
build: .
command: daphne -b 0.0.0.0 -p 8000 restbench.asgi:channel_layer
user: app
working_dir: /app
ports:
- 8000:8000
depends_on:
- database
- redis
workerserver:
build: .
user: app
working_dir: /app
command: python manage.py runworker
depends_on:
- database
- redis
database:
image: postgres:9.5
redis:
image: redis:3.0-alpine
本质上,我正在尝试运行四个服务。一个接口(interface)服务器、一个工作服务器、一个 Postgres 数据库和一个 Redis 服务器。 Interface-Server 和 Worker-Server 以及我自己的 Django 从与 docker-compose.yml 位于同一目录中的本地 Dockerfile 构建
现在我正在尝试将我的应用程序部署到 Elastic Beanstalk,据我了解,我需要一个 Dockerrun.aws.json,它与 docker-compose.yml 相同,仅适用于 AWS。我尝试从 EBS 阅读文档,但正如我上面提到的,我无法理解我指定 Interface-和 Worker-Server 的部分。数据库和 Redis 部分很简单,但我不明白如何在 AWS 的 json 文件中指定如何构建这两个服务器。
非常感谢任何帮助。
最佳答案
我们不能再在“AWSEBDockerrunVersion: 2”中从 Dockerfile 构建镜像。如果我们使用“AWSEBDockerrunVersion: 1”使用单个 Dockerfile 设置单个容器,这是可能的。
在您的情况下,您必须自己构建和推送图像,或者让您的 CI 服务器来完成。在 Dockerrun.aws.json v2 中定义图像。
来自 AWS 文档的引用 -
用于 Elastic Beanstalk 的多容器 Docker 平台需要预先构建镜像并将其存储在公共(public)或私有(private)在线镜像存储库中。
Elastic Beanstalk 上的多容器 Docker 平台不支持在部署期间使用 Dockerfile 构建自定义镜像。在创建 Elastic Beanstalk 环境之前,构建您的镜像并将其部署到在线存储库。
关于django - AWS 上的多容器 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45628351/