首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在码头内迁移Django数据库

如何在码头内迁移Django数据库
EN

Stack Overflow用户
提问于 2021-04-27 10:56:37
回答 1查看 1.7K关注 0票数 0

我有一个码头撰写项目,两个容器运行NGINX和gunicorn与我的django文件。在AWS RDS中,我还有一个在docker之外的数据库。我的问题类似于this one。但是,这个问题是与一个数据库有关的,这个数据库是在坞-组合中的。我的在外面。

因此,如果我要为我的容器打开一个bash终端并运行py manage.py makemigrations,那么问题将是django项目中的迁移文件,例如:/my-django-project/my-app/migrations/001-xxx.py将与存储已应用迁移的数据库不同步。这将发生,因为我的容器可以关闭和打开一个新的容器在任何时候。迁移文件也不会被保存。

我的想法是:

  • 在docker中使用volume,但是由于迁移文件夹分布在所有可能很难实现的django应用程序中。

  • 处理坞外的迁移,这需要某种“主”项目来存储迁移文件。这似乎不是一个好主意,因为整个项目将依赖于现有的一些本地文件。

我正在寻找关于如何处理迁移的良好实践的建议。

编辑:

这里是docker-compose.yml,我用docker-compose up在本地运行,在生产中用docker compose up运行AWS。我忽略了一些,我认为这并不重要。

docker-compose.yml

代码语言:javascript
复制
version: '3'

services:
  web:
    image: <secret>.dkr.ecr.eu-west-3.amazonaws.com/api-v2/django:${IMAGE_TAG}
    build:
      context: .
      dockerfile: ./Dockerfile
    networks: 
      - demoapp
    environment:
      - DEBUG=${DEBUG}
      - SECRET_KEY=${SECRET_KEY}

  nginx:
    image: <secret>.dkr.ecr.eu-west-3.amazonaws.com/api-v2/nginx:${IMAGE_TAG}
    build:
      context: .
      dockerfile: ./nginx.Dockerfile
    ports:
      - 80:80
    depends_on:
      - web
    networks: 
      - demoapp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 11:51:57

问题归结为如何存储Django在py manage.py makemigrations上生成的迁移文件,以及何时/在何处运行py manage.py migrate。正如404pio所建议的,您可以像GitHub一样在代码中简单地存储这些信息。

我的工作流程是这样的:

在我的本地开发环境中运行

  1. ,运行py manage.py makemigrationspy manage.py migrations (目标是像sqlite那样的开发数据库)。如果一切正常,
  2. ,提交并推到git.
  3. (我正在使用CircleCI测试和部署我的Django项目,但这也可以手动完成)。CircleCI在git推送后运行管道。在管道中,作为运行py manage.py migrate的最后一步。这必须是在应用程序部署之后,因为这可能会失败,然后您就不想迁移了。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67281709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档