Я устанавливаю проект nginx-gunicorn-django- postgres с помощью docker-compose.
У меня есть контейнер с 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-составьте версию: 1.24.0, версию докера: 18.09.2