我有一个Django项目,在我的本地计算机上运行良好。我想在AWS上托管相同的服务器,但对使用哪种服务以及最佳实践却感到困惑。我是否使用EC2,在其上创建ubuntu实例并安装Docker或使用ECS?

将django项目转移到AWS的最佳实践是什么。我是否在Docker Hub上创建存储库?

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

我的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

谢谢!

UPDATE (我进行部署的步骤)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推送到ECR上。databaseApache容器在哪里起作用?

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

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

谢谢 !

最佳答案

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

  • 包装图像
  • 您可以通过编写Dockerfile来创建docker镜像,该Dockerfile实际上会复制您的Python Django源代码并安装所有依赖项。
  • 这可以在本地完成,也可以使用任何CI / CD工具进行。
  • 存储图像
  • 这是您将推送和存储Docker镜像的部分。所有打包的图像将在此步骤中推送。
  • 这可以是EC2实例可从中获取docker镜像(最好是ECR)的任何注册表,但您也可以选择dockerhub。如果是dockerhub,则需要将凭据存储到S3中。
  • 部署镜像
  • 在这一部分中,您将图像部署到EC2实例。
  • 您可以根据需要使用各种服务,例如ECS,ElasticBeanstalk多容器或Fargate(相对较新)。
  • ECS -最优选的部署方式,但您需要自己管理集群和资源。必须在任务定义(JSON文件)中定义图像。
    Beanstalk多容器-相对于ECS而言较新,它在后台使用ECS将docker镜像部署到集群。您不必担心资源,只需将JSON文件提供给您的环境即可,剩下的由Beanstalk负责。
    Fargate -管理或部署容器,而不必担心您的集群/管理器等。非常新,从来没有机会对其进行研究。

  • 参考-
    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/

    关于django - 在AWS上托管Dockerized Django项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49725271/

    10-12 17:54
    查看更多