我有一个码头撰写项目,两个容器运行NGINX和gunicorn与我的django文件。在AWS RDS中,我还有一个在docker之外的数据库。我的问题类似于this one。但是,这个问题是与一个数据库有关的,这个数据库是在坞-组合中的。我的在外面。
因此,如果我要为我的容器打开一个bash终端并运行py manage.py makemigrations,那么问题将是django项目中的迁移文件,例如:/my-django-project/my-app/migrations/001-xxx.py将与存储已应用迁移的数据库不同步。这将发生,因为我的容器可以关闭和打开一个新的容器在任何时候。迁移文件也不会被保存。
我的想法是:
volume,但是由于迁移文件夹分布在所有可能很难实现的django应用程序中。我正在寻找关于如何处理迁移的良好实践的建议。
编辑:
这里是docker-compose.yml,我用docker-compose up在本地运行,在生产中用docker compose up运行AWS。我忽略了一些,我认为这并不重要。
docker-compose.yml
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发布于 2021-04-27 11:51:57
问题归结为如何存储Django在py manage.py makemigrations上生成的迁移文件,以及何时/在何处运行py manage.py migrate。正如404pio所建议的,您可以像GitHub一样在代码中简单地存储这些信息。
我的工作流程是这样的:
在我的本地开发环境中运行
py manage.py makemigrations和py manage.py migrations (目标是像sqlite那样的开发数据库)。如果一切正常,py manage.py migrate的最后一步。这必须是在应用程序部署之后,因为这可能会失败,然后您就不想迁移了。https://stackoverflow.com/questions/67281709
复制相似问题