Можно ли создать собственную базу данных при создании образа (docker image build --tag mydb: latest)? Если я помещу свой sql файл в базу данных "/docker-entrypoint-initdb.d/", то он будет выполняться каждый раз, когда я запускаю контейнер с этого образа. Я не хочу запускать скрипт базы данных каждый раз, когда запускаю, потому что это огромная база данных.
Это для автоматического тестирования. Если я свяжу том, база данных станет персистентной. Я тоже этого не хочу. Потому что мои тесты не пройдут.
Это мой Dockerfile
FROM postgres:10
COPY seed.sql /tmp/
COPY init-db.sh /tmp/
WORKDIR /tmp/
RUN ["chmod", "+x", "init-db.sh"]
RUN ./init-db.sh
Это мой init-db. sh
#!/bin/bash
set -e
RETRIES=5
cd /usr/lib/postgresql/10/bin/
gosu postgres initdb
su postgres -c './pg_ctl start -D "/var/lib/postgresql/data"'
until psql -U postgres -d postgres -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do
echo "Waiting for postgres server, ${RETRIES}-- remaining attempts..."
RETRIES=$((RETRIES--))
sleep 1
done
psql -v ON_ERROR_STOP=1 -U postgres <<-EOSQL
\i /tmp/seed.sql;
EOSQL
Usng выше Dockerfile и init -db. sh Я вижу, что моя база данных запускается при создании изображения. Но когда я запускаю контейнер с этим изображением, я не вижу базу данных, созданную seed. sql. Итак, как я могу создать свое собственное "postgres docker изображение" с моей собственной базой данных?