我似乎无法了解Dockerrun.aws.json文件,这是在AWS Elastic Beanstalk上运行多容器泊坞窗环境所必需的。
当我通过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
基本上我正在尝试运行四项服务。接口服务器,工作服务器,Postgres数据库和Redis服务器。 Interface-Server和Worker-Server以及我自己的Django Builds来自本地Dockerfile,它们与docker-compose.yml在同一目录下
现在我正在尝试将我的应用程序部署到Elastic Beanstalk,根据我的理解,我需要一个Dockerrun.aws.json,它与docker-compose.yml相同,仅适用于AWS。我尝试从EBS阅读文档,但正如我上面提到的,我无法理解我指定Interface-和Worker-Server的部分。 Database和Redis部分很简单,但我不知道如何在AWS的json文件中指定如何构建这两个服务器。
非常感谢任何帮助。
答案 0 :(得分:2)
我们无法在“AWSEBDockerrunVersion:2”中从Dockerfile构建图像。通过使用“AWSEBDockerrunVersion:1”,我们可以使用单个Dockerfile设置单个容器。
在你的情况下,你必须建立&您自己推送图像或让CI服务器执行此操作。在Dockerrun.aws.json v2中定义图像。
来自AWS文档的参考 -
Docker图片 - 用于Elastic Beanstalk的Multicontainer Docker平台需要预先构建图像并将其存储在公共或私有在线图像存储库中。 Elastic Beanstalk上的多容器Docker平台不支持在部署期间使用Dockerfile构建自定义映像。在创建Elastic Beanstalk环境之前构建映像并将其部署到联机存储库。