首页 > 解决方案 > 在 AWS 上部署多个 Django 应用程序,每个实例都有配置

问题描述

我开发了一个 Django+Vuejs 应用程序,现在是时候尝试部署它了。问题是我想为每个客户运行它的一个实例。所以每个客户都会有:

虽然我已经能够使用以下 Dockerfile 构建我的容器:

FROM node:lts-alpine as build-frontend-stage
WORKDIR /frontend
COPY ./frontend/package*.json /frontend/
RUN npm install
COPY ./frontend .
RUN npm run build

FROM python:3.8.10-slim as build-backend-stage
RUN apt-get update && apt-get install --yes --no-install-recommends \
    g++ \
    libpq-dev
WORKDIR /backend
RUN pip install --upgrade pip
COPY ./backend/requirements.txt /backend
RUN pip install -r requirements.txt
COPY ./backend .
COPY --from=build-frontend-stage /frontend/dist/static /backend/static
COPY --from=build-frontend-stage /frontend/dist/index.html /backend/static

我现在想知道如何通过以下问题运行它:

  1. 启动容器时,它应该执行一个manage.py migrate将 Django 迁移应用到客户数据库(这样如果我在客户使用 v1.0 时部署我的应用程序的 v1.2 版本,它会迁移他的数据库)。我必须做什么才能运行它?必须在启动 Gunicorn(或等效项)之前完成。
  2. 每个容器都必须使用自己的环境变量启动。因为所有容器都有不同的数据库,所以需要一个 DB_HOST 环境变量来定位每个客户的正确数据库。
  3. 我是否必须为每个客户提供不同的 nginx 配置?如果是这样,我怎样才能使其动态可配置?

总结一下:如果我有一个名为“foo”的客户运行我的软件 v1.0,我必须具备以下条件:

你能帮我为这样的部署要求提供一些指导、参考吗?

如果缺少某些信息,请说出来,我会调整我的初始帖子。

提前致谢 !

标签: djangoamazon-web-servicesdocker

解决方案


推荐阅读