django - docker-compose 卷不会保留数据

标签 django postgresql docker docker-compose docker-volume

我正在使用 docker-compose 设置 nginx-gunicorn-django-postgres 项目。

我有一个带有 postgres 的容器,我想让我的数据持久化。因此,例如,当我执行 docker-compose ... start/stop/up/down 时,我希望数据库仍然存在。我已经读到,我应该使用卷来实现此目的,如我的 production.yaml 中所示:

version: '3.7'

services:
  web:
    build:
      context: .
      dockerfile: docker-compose/django/Dockerfile

    command: gunicorn config.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    expose:
      - 8000
    environment:
      - SECRET_KEY=please_change_me
      - SQL_ENGINE=django.db.backends.postgresql
      - SQL_DATABASE=postgres
      - SQL_USER=postgres
      - SQL_PASSWORD=postgres
      - SQL_HOST=db
      - SQL_PORT=5432
    depends_on:
      - db

  db:
    image: postgres:10.5
    restart: always
    volumes:
      - /home/username/postgres_data:/var/lib/postgresql/data

  nginx:
    build: ./docker-compose/nginx
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    ports:
      - 80:80
    depends_on:
      - web

volumes:
  static_volume:
  media_volume:

问题是,每当我执行docker-compose -f production.yaml stop然后再次启动时,除了迁移之外,数据库都是空的:(。 我不知道如何解决这个问题。我猜容器可能没有写入卷的权限?另一方面,当我第一次启动容器时,一切都运行良好,一切都在数据库中等等。只有在 docker-compose ... stop/down 后数据库才会被清除(同样,迁移仍然存在)。

我在这里缺少什么?

docker-compose版本:1.24.0, docker版本:18.09.2

最佳答案

我想给予更多的关注,但完全归功于评论中的@marke。我遇到的问题是我正在刷新入口点中的数据库。在 django 中,我运行了 python manage.pylush ,它重置了数据库。

关于django - docker-compose 卷不会保留数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669406/

相关文章:

sql - 每个用户 ID 的 first_value 和 last_value

PostgreSQL 错误 : operator >> is not a valid ordering operator

postgresql - Postgres 索引创建时间

windows - Docker for Windows 的 DOCKER_BUILDKIT?

mongodb - 更改Mongo-Express的8081端口

docker - ubuntu 16.04 上的 kubernetes

javascript - 图表未根据从 Jquery 收到的值进行更新

python - 如何在Django单元测试中正确使用assertRaises?

python - 如何使用路径在 Django 2.0 中添加参数

python django 日志记录 timerotatingfilehandler