使用 Django 和 Postgres 在 AWS 上生产 Docker:

Cha*_*Hey 5 django postgresql amazon-web-services docker docker-compose

最近,我在尝试找出一个可以支持我的“dockerized”Python Django 项目的云环境设置时遇到了困难。我的应用程序的架构很简单;我有一个 Web 服务、一个 Redis 服务和一个数据库服务(请参阅下面我的 compose yml 文件)。

我的困惑是找到将通过 docker compose yml 文件建立的本地设置移动到类似生产环境的正确路径。我非常喜欢 docker compose 实用程序,并希望在我的生产环境中使用类似的配置文件;然而,我发现云上大多数基于容器的方法都比这复杂得多...到目前为止,本指南是我最喜欢的,但它没有深入研究数据库和其他依赖的组件(这遗漏了必要的组件)实质内容!)。

问题:

  • 我应该放弃在生产环境中尝试使用 docker-compose 吗?
  • 我应该使用非容器化的数据库吗?如果不应该,如何将容器化 Web 服务配置到 Amazon RDS 实例?
  • 我应该将 docker-compose.yml 分解为单独的 docker 文件吗?我应该编写脚本来启动这些容器来支持环境吗?
  • 是否有我找不到做此类事情的可靠教程?我感到困惑的是,很多指南都过于简单,甚至对比“Hello World”更复杂的应用程序也没有帮助。

我还发现 AWS 和 Heroku 缺乏我根据 docker 的流行程度所期望的共同功能。这是普遍持有的观点吗?Heroku 不帮助或提倡在容器中设置数据库,对于尝试使用 v3 编写的 docker-compose yml 文件的用户来说,AWS 仍然落后。

非常感谢任何建议...在过去的三个晚上我一直在努力,没有得出可靠的结论。

version: '3.3'

services:
  db:
    restart: always
    image: postgres
    networks:
      - webnet
  redis:
    restart: always
    image: redis:latest
    expose:
      - "6379"
    networks:
      - webnet
  web:
    restart: always
    build: .
    command: make start
    volumes:
      - .:/code
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "8000:8000"
    networks:
      - webnet
    depends_on:
      - db
      - redis

networks:
  webnet:
Run Code Online (Sandbox Code Playgroud)