[英]How to deploy a python docker image to AWS Elastic beanstalk?
[英]How to deploy an app with multiple Docker containers to AWS Elastic Beanstalk?
我有一个 Django 应用程序,其 docker 图像的Dockerfile
如下:
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip3 install -r requirements.txt
COPY . /code/
ENV PORT=8000
EXPOSE 8000
然后,我有一个docker-compose.yml
文件,用于为我的 Django 应用程序定义其他容器映像和依赖项,如下所示:
version: '3'
services:
web: &django_app
build: .
command: python3 manage.py runserver 0.0.0.0:8000
ports:
- "80:8000"
depends_on:
- rabbitmq
rabbitmq:
image: rabbitmq:latest
celery_worker:
<<: *django_app
command: celery -A DJingApp worker --loglevel=info
ports: []
depends_on:
- rabbitmq
正如您在上面看到的,我必须在任何时间点运行 3 个容器( web
、 rabbitmq
和celery_worker
)才能让我的 ZEF0F93C83E374876A61DA0D4D16F3 应用程序运行。
那么,如何将该项目的 Docker 映像部署到 AWS Elastic Beanstalk 并在那里运行它们? 我必须对我的Dockerfile
或docker-compose.yml
进行任何更改吗? 如果是,它们是什么?
将多容器应用程序部署到 Elastic Beanstalk 非常具有挑战性。 您需要一个Dockerrun.aws.json
版本 2 配置文件,它是一个 Elastic Beanstalk 特定的 JSON 文件,该文件描述如何将一组 Docker 容器部署为 Elastic Beanstalk 应用程序。
如果您不知道如何创建配置文件,我建议您查看官方页面。
您还可以使用容器转换实用程序将docker-compose
文件转换为Dockerrun.aws.json
配置文件,我觉得这很有帮助。 您可能需要对自动生成的文件进行一些更改。
而且要自定义您的环境,您需要使用.ebextensions 。 比如定义你的Django设置路径,WSGI路径,web服务器配置,部署前执行Django管理命令等等。
对于详细的日志,我建议使用以下环境日志:
Elastic Beanstalk - 环境 - '您的环境名称' - 日志
注意:我建议使用eb deploy来成功部署,因为您需要以.zip
文件格式部署源代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.