Я использую 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 только один раз, а затем использовать это постоянное хранилище. Спасибо за ответы.