簡體   English   中英

docker-compose 卷不會保留數據

[英]docker-compose volume won't persist data

我正在使用 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.py flush來重置數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM