docker-compose как загрузить дамп базы только 1 раз?
Необходимо сохраниыть докер образ в файл и потом передавать их "на проверку" на флешке. Образ с базой данных должен содержать накаченный дамп.
Пробую собирать образ из Dockerfile:
FROM postgres:12.4-alpine
ADD ./dump/dump.sql /docker-entrypoint-initdb.d
А потом запускаю это всё через docker-composel:
version: '3'
services:
postgres:
image: my_custom_image
environment:
PGDATA: /var/lib/postgresql/data
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASS}
ports:
- ${DB_PORT}:5432
Проблема заключается в том, что дамп накатывается каждый раз при старте контейнера, что ведёт например к тому что остальные контейнеры могут не дождаться накатки дампа и упасть по таймауту подключения к бд.
Как можно накатить дамп 1 раз, чтобы при старте контейнера с базой все данные были уже заполнены?
Вернее так - как сделать образ, чтобы он уже содержал уже накаченный дамп? Чтобы соответственно человек подниал контейнер из этого образа и в контейнере уже была бы заполненная база.
Ответы (1 шт):
Выполнить накат дампа в процессе сборки контейнера? Или развернуть дамп локально и скопировать каталог данных в контейнер. И при старте это уже не нужно будет.
Если же такой вариант не возможен, то при старте других контейнеров можно учесть время развертывания БД, например до одной минуты. и добавить это в entrypoint.sh
sleep 1m
java -jar ...