Том Docker не сохраняет данные после выключения docker-compose - PullRequest
0 голосов
/ 04 июля 2018

Я использую docker compose для объединения двух изображений (tomcat с моим приложением и базой данных - postgres).

Мой составной файл выглядит так:

version: '3'

services:
  tomcat:
    build: ./tomcat-img
    ports:
      - "8080:8080"
    depends_on:
      - "db"

  db:
    build: ./db-img
    volumes:
       - db-data:/var/lib/postgres/data
    ports:
      - "5433:5432"

volumes:
  db-data:

и вот докер-файл для образа базы данных:

FROM postgres:9.5-alpine
ENV POSTGRES_DB mydb
ENV POSTGRES_USER xxxx
ENV POSTGRES_PASSWORD xxxx
COPY init-db.sql /docker-entrypoint-initdb.d/

EXPOSE 5432
CMD ["postgres"]

Затем я начал свои контейнеры с помощью docker-compose cli docker-compose -f docker-compose.yml up

и запустите инструмент psql с помощью:

docker exec -it container_id psql -d xxxx -U xxxx

и вставьте новую запись. После этого я проверяю, действительно ли есть:

select * from my_table;

После этого я попытался остановить сборку и удаление контейнеров с помощью:

docker-compose -f docker-compose.yml down

и запустите его снова

docker-compose -f docker-compose.yml up

когда я снова запускаю инструмент psql контейнера db и выбираю данные в my_table, предыдущая вставленная запись отсутствует ... Можете ли вы помочь мне исправить это, пожалуйста? Мне нужно init мой DB с init-db.sql только один раз, а затем использовать это постоянное хранилище. Спасибо за ответы.

1 Ответ

0 голосов
/ 04 июля 2018

В моем Dockerized Postgresql с томом данных я привязываюсь к / var / lib / postgresql, а не к / var / lib / postgres / data. Попробуйте изменить файл композиции на

volumes:
       - db-data:/var/lib/postgresql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...