Я новичок в докеров и разрабатываю проект с использованием докеров. Из документации я узнал, что для хранения данных я должен использовать только контейнеры данных, но я не могу это сделать, используя docker-compose.
Всякий раз, когда я делаю docker-compose down
, он удаляет данные из db, но, выполняя docker-compose stop
, данные не удаляются. Может быть, это потому, что я не создаю именованный объем данных, а docker-compose down
вряд ли удаляет все контейнеры. Поэтому я попробовал назвать контейнер, но он бросил мне ошибки.
Пожалуйста, посмотрите мой файл yml
:
version: '2'
services:
data_container:
build: ./data
#volumes:
# - dataVolume:/data
db:
build: ./db
ports:
- "5445:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
# - PGDATA=/var/lib/postgresql/data/pgdata
volumes_from:
# - container:db_bus
- data_container
geoserver:
build: ./geoserver
depends_on:
- db
ports:
- "8004:8080"
volumes:
- ./geoserver/data:/opt/geoserverdata_dir
web:
build: ./web
volumes:
- ./web:/code
ports:
- "8000:8000"
depends_on:
- db
command: python manage.py runserver 0.0.0.0:8000
nginx:
build: ./nginx
ports:
- "83:80"
depends_on:
- web
Файл Docker для data_container:
FROM stackbrew/busybox:latest
MAINTAINER Tom Offermann <[email protected]>
# Create data directory
RUN mkdir /data
# Create /data volume
VOLUME /data
Я пробовал это, но, выполняя компоновку докеров, данные теряются. Я попробовал присвоить имя data_container, поскольку вы можете видеть прокомментированную строку, это заставило мне эту ошибку:
ERROR: Named volume "dataVolume:/data:rw" is used in service "data_container" but no declaration was found in the volumes section.
Итак, теперь я делаю самостоятельные данные только с именем container и помещаю это в значение volumes_from
для db. Он работал нормально и не удалял никаких данных даже после выполнения docker-compose down
.
Мои запросы:
-
Каков наилучший подход к созданию контейнеров, которые могут хранить данные базы данных с помощью
docker-compose
и использовать их правильно? -
Мое сознание не соглашается со мной в отношении подхода, который я выбрал, который создал отдельный контейнер данных. Любые мысли?