在AWS上托管Dockerized Django项目

时间:2018-04-09 03:52:27

标签: django amazon-web-services docker amazon-ec2 web-hosting

我有一个Django项目,在我的本地机器上工作正常。我想在AWS上托管相同内容,但对使用什么服务以及最佳做法感到困惑。我是否使用EC2,在其上创建一个ubuntu实例并安装Docker或使用ECS?

将我的django项目转移到AWS的最佳做法是什么?我是否在Docker中创建存储库?

请帮我解释一下这方面的最佳工作流程。

我的docker-compose文件如下所示:

version: '3'

services:

  db:
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_DATABASE=tg_db
      - MYSQL_ROOT_PASSWORD=password
    volumes:
      - ./dbdata:/var/lib/mysql

  web:
    build: .
    command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

谢谢!

更新(我采取的部署步骤) Dockerfile

# Start with a python image
FROM python:3

# Some stuff that everyone has been copy-pasting
# since the dawn of time.
ENV PYTHONUNBUFFERED 1

# Install things
RUN apt-get update

# Make folders and locations for project

RUN mkdir /code
COPY . /code
WORKDIR /code/project/t_backend

# Install requirements

RUN pip install -U pip
RUN pip install -Ur requirements.txt

我使用了sudo docker-compose up -d,项目正在本地

上运行

现在我将tg_2_web:latest推到了ECRdatabaseApache容器在哪里发挥作用。

我是否必须为mysql databaseapache容器创建一个单独的存储库。

如何使用ECS连接所有容器?

谢谢!

1 个答案:

答案 0 :(得分:3)

这个问题的答案可能非常广泛,但只是为了让你了解它应该经历的所有过程 -

  1. 打包图片

    • 使用编写Dockerfile创建一个docker镜像,它实际上复制了您的Python Django源代码&安装所有依赖项。
    • 这可以在本地完成,您也可以使用任何CI / CD工具。
  2. 存储图片

    • 这是你要推动的部分。存储您的Docker镜像。所有打包的图像都将在此步骤中推送。
    • 这可以是EC2实例可以从中获取docker镜像的任何注册表,最好是ECR,但您也可以选择dockerhub。如果是dockerhub,则需要将凭据存储到S3中。
  3. 部署图片

    • 在此部分中,您将把图像部署到EC2实例。
    • 您可以根据自己的需求使用各种服务,例如ECS,ElasticBeanstalk多容器或者Fargate(相对较新)。
    • ECS - 最首选的部署方式,但您需要管理群集&资源由你自己。必须在作为JSON文件的任务定义中定义图像 Beanstalk Multi Container - 相对较新的ECS,在后台使用ECS将docker镜像部署到群集。您不必担心资源,只需将JSON文件提供给您的环境&休息由Beanstalk照顾。
      Fargate - 管理或部署您的容器而不必担心您的群集/经理等。相当新的,从未有机会查看它。
  4. 参考 -
    https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html
    https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html
    https://aws.amazon.com/fargate/