Я новичок в Docker и пытаюсь заставить приложение Django работать в контейнере Docker.Этому приложению нужна база данных PostgreSQL (и redis).
Чтобы попробовать это, я создал образ (Dockerfile) для своего приложения и использовал базовый образ postgres
для сервера базы данных.Мой файл docker-compose выглядит так:
version: '3.7'
services:
db:
image: postgres
redis:
image: redis
api:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
environment:
- DJANGO_SETTINGS_MODULE=api.settings.docker_settings
volumes:
- ./api:/code/api
ports:
- "8000:8000"
depends_on:
- db
- redis
Поскольку мой файл docker-compose не определяет какой-либо том для базы данных, я ожидал, что данные базы данных будут потеряны при остановке контейнера, но это не так!То есть, если я запускаю docker-compose up
, добавляю данные в базу данных, останавливаю docker-compose и запускаю ее снова, данные все еще там!
Том автоматически создается Docker?(Я заметил команду VOLUME
в Dockerfile образа postgres
, см. здесь ).
Теперь я хотел бы добавить том в docker-compose для хранения базы данныхгде-то я могу контролировать.Как я могу это сделать?Я подумал, что должен изменить файл docker-compose на
...
db:
image: postgres
volumes:
- ./postgres_data:/var/lib/postgresql/data
...
, но как я могу сказать Docker не использовать предыдущие данные, которые были автоматически сохранены?