Как уже упоминал @Roman Konoval, вы можете использовать переменную POSTGRES_DB
env для создания базы данных.
Вот соответствующий фрагмент документации (см. Раздел «Переменные среды»):
POSTGRES_DB
Эта необязательная переменная среды может использоваться для определения другого имени для базы данных по умолчанию, которая создается при первом запуске образа. Если он не указан, будет использовано значение POSTGRES_USER
Затем, чтобы создать таблицу или выполнить какой-либо SQL-импорт (расширить postgres image: https://docs.docker.com/samples/library/postgres/#how-to-extend-this-image).
Ваш dockerfile
должен выглядеть так:
FROM library/postgres
COPY start.sh /docker-entrypoint-initdb.d/start.sh
start.sh
#!/bin/sh
psql -h localhost -U user -W -d database_name -f /path/to/init.sql
когда вы запускаете свой контейнер, вам нужно смонтировать скрипт sql в /path/to/init.sql
следующим образом:
$ docker run my_postgress_image -e "POSTGRES_DB=database_name" -v ./init.sql:/path/to/init.sql