Следуя официальному postgres docker изображению , вы можете настроить точку входа, в которую будете помещать свои сценарии инициализации.
Это прекрасно работает. Для разработки / тестирования мне нужна чистая база данных при каждом запуске контейнера, а не только при первом.
Все скрипты внутри docker-entrypoint-initdb.d
запускаются только один раз (первый время запуска контейнера).
Есть ли простой способ выполнить скрипт каждый раз, когда контейнер запускается через docker-compose
?
Я ставлю DROP TABLE IF EXISTS
перед каждым CREATE TABLE
, поэтому .sql
скрипт будет работать даже при новом запуске.
Соответствующая часть docker -композиции, если кому-то это нужно:
postgres-myname:
image: postgres:12.1-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres-db
ports:
- "54320:5432"
build:
context: .
dockerfile: postgresql-config/Dockerfile
networks:
- my-network