Django 中的 makemigrations(在 docker-compose 下)不存储迁移文件,但执行数据库更改

问题描述 投票:0回答:1

今天我的同事建议删除迁移文件以便再次创建它们。当我执行此操作时,我看到应用程序的迁移文件夹中只有 init.py 同时,之前执行了数据库所需的操作(特别是为模型创建附加表)。

我在这个项目上工作了大约一周,并且不止一次执行了下面的命令,当然!但从未见过迁移文件夹中没有存储任何文件。

这是我运行 makemigrations 的命令:

docker-compose exec web python manage.py makemigrations

这是执行迁移的命令:

docker-compose exec web python manage.py migrate --noinput

这是我的 docker-compose.yml:

version: '3'

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    volumes:
      - ./static/:/app/static/
      - ./media/:/app/media/
    command: >
      sh -c "gunicorn conf.wsgi:application --bind 0:8000"
    depends_on:
      - db
    ports:
      - "8000:8000"
    env_file:
      - .env
    environment:
      - DEBUG=True
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"


  db:
    image: postgres:latest
    environment:
      POSTGRES_DB: $DB_NAME
      POSTGRES_USER: $DB_USER
      POSTGRES_PASSWORD: $DB_PASS

  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: [email protected]
      PGADMIN_DEFAULT_PASSWORD: postgres
    ports:
      - "5050:80"

volumes:
  postgres_data:
  static_volume:
  ssl_volume:

我尝试重新启动容器,docker。 有时也重新启动 IDE (PyCharm)。

django docker-compose django-migrations
1个回答
0
投票

理想情况下,您将迁移文件存储在 github 存储库中。如果您犯了错误并忘记更新本地数据库,会发生什么情况?此外,迁移文件将在每次部署后删除,因为它未安装到卷。如果您在某个地方犯了错误,这将不允许您恢复到之前的迁移。

经验法则是将迁移文件放在 github 存储库中,并且在您的服务器上仅运行

python manage.py migrate
以确保您的本地环境尽可能匹配您的生产。

© www.soinside.com 2019 - 2024. All rights reserved.