【发布时间】:2019-09-04 06:26:18
【问题描述】:
我正在使用 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, 码头工人版本:18.09.2
【问题讨论】:
-
同样的问题
-
我的问题是我在入口点脚本中刷新数据库...我从一些教程中复制它并且很长时间没有注意到它
标签: django postgresql docker docker-compose docker-volume