使用Docker-Compose时如何执行Django数据库迁移?
我已经按照Docker站点上的Django Quick Start指导紧密设置了Docker Django / PostgreSQL应用程序。
第一次运行Django的manage.py migration时,使用命令sudo docker-compose run web python manage.py migrate可以正常工作。该数据库建立在Docker PostgreSQL容器内就很好了。
当我保存它们时,对Django应用本身所做的更改同样会反映在Docker Django容器中。这很棒!
但是,如果我再改在Django的模型,并尝试更新的Postgres数据库来匹配模型,都没有检测到变化所以没有迁移发生,无论我有多少次运行makemigrations或migrate试。
基本上,每次更改Django模型时,都必须删除Docker容器(使用sudo docker-compose rm),并重新开始新的迁移。
我仍在努力了解Docker,但我对它的工作原理有很多不了解,但这使我发疯。为什么不迁移看到我的更改?我究竟做错了什么?
-
你只需要登录到正在运行的docker容器并运行命令。
- 建立你的堆栈:
docker-compose build -f path/to/docker-compose.yml
- 启动堆栈:
docker-compose up -f path/to/docker-compose.yml
- 显示docker正在运行的容器:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3fcc49196a84 ex_nginx "nginx -g 'daemon off" 3 days ago Up 32 seconds 0.0.0.0:80->80/tcp, 443/tcp ex_nginx_1 66175bfd6ae6 ex_webapp "/docker-entrypoint.s" 3 days ago Up 32 seconds 0.0.0.0:32768->8000/tcp ex_webapp_1 # postgres docker container ...
获取你的django应用程序的容器ID并登录:
docker exec -t -i 66175bfd6ae6 bash
现在你已登录,然后转到正确的文件夹:
cd path/to/django_app
现在,每次编辑模型时,都在容器中运行:
python manage.py makemigrations和python manage.py migrate
我还建议你为
django docker
容器文件使用docker-entrypoint
自动运行:- collecstatic
- migrate
- runserver or start it with gunicorn or uWSGI
这是一个示例
(docker-entrypoint.sh)
:#!/bin/bash # Collect static files echo "Collect static files" python manage.py collectstatic --noinput # Apply database migrations echo "Apply database migrations" python manage.py migrate # Start server echo "Starting server" python manage.py runserver 0.0.0.0:8000
- 建立你的堆栈:
-
使用Docker-Compose时如何执行Django数据库迁移?
2021-02-01 关注 0 浏览143 1答案
-
如何使用docker-compose播种mongo数据库?
2021-02-01 关注 0 浏览132 1答案
-
使用docker-compose在Postgresql数据库中创建表
2021-02-01 关注 0 浏览127 1答案
-
docker-compose具有多个数据库
2021-02-01 关注 0 浏览135 1答案
-
使用Docker-Compose,如何执行多个命令
2021-02-01 关注 0 浏览98 1答案
-
使用 Docker-Compose,如何执行多个命令
2022-03-22 关注 0 浏览26 1答案
-
为什么我无法通过“ docker-compose run web”命令运行django迁移?
2021-02-01 关注 0 浏览176 1答案
-
如何使用 docker-compose 标记 docker 镜像
2022-07-28 关注 0 浏览20 1答案
-
如何使用docker-compose标记docker映像
2021-02-01 关注 0 浏览134 1答案
-
docker-compose rails rake db:reset失败,“无法删除当前打开的数据库”
2021-02-01 关注 0 浏览88 1答案