В моем docker -компонентном файле у меня есть следующее:
services:
delivery_psql:
container_name: delivery_psql
image: postgres:11.6
restart: always
environment:
- POSTGRES_USER=test
- POSTGRES_PASSWORD=test
volumes:
- ./databases/delivery_psql/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- 5432:5432
Содержимое init.sql
:
CREATE DATABASE delivery;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE SCHEMA IF NOT EXISTS test;
Когда я запускаю docker-compose stop delivery_psql && docker-compose rm delivery_psql && docker-compose up delivery_psql
Я получаю следующий вывод, который говорит мне, что команды в init.sql
были выполнены - расширение было установлено, и была создана тестовая схема:
delivery_psql | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
delivery_psql | CREATE DATABASE
delivery_psql | CREATE EXTENSION
delivery_psql | CREATE SCHEMA
delivery_psql |
delivery_psql |
delivery_psql | 2020-03-13 16:38:38.776 UTC [44] LOG: received fast shutdown request
delivery_psql | waiting for server to shut down....2020-03-13 16:38:38.778 UTC [44] LOG: aborting any active transactions
delivery_psql | 2020-03-13 16:38:38.784 UTC [44] LOG: background worker "logical replication launcher" (PID 51) exited with exit code 1
delivery_psql | 2020-03-13 16:38:38.785 UTC [46] LOG: shutting down
delivery_psql | 2020-03-13 16:38:38.824 UTC [44] LOG: database system is shut down
delivery_psql | done
delivery_psql | server stopped
delivery_psql |
delivery_psql | PostgreSQL init process complete; ready for start up.
delivery_psql |
delivery_psql | 2020-03-13 16:38:38.895 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
delivery_psql | 2020-03-13 16:38:38.895 UTC [1] LOG: listening on IPv6 address "::", port 5432
delivery_psql | 2020-03-13 16:38:38.899 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
delivery_psql | 2020-03-13 16:38:38.919 UTC [71] LOG: database system was shut down at 2020-03-13 16:38:38 UTC
delivery_psql | 2020-03-13 16:38:38.928 UTC [1] LOG: database system is ready to accept connections
Но когда я вхожу в БД, \dx
не показывает, что расширение было установлено, а \dn
не показывает, что была создана тестовая схема.
Любые мысли о том, почему кажется, что сценарий инициализации запущен, но я не вижу изменений в мой psql контейнер?
РЕДАКТИРОВАТЬ:
Я также пытался связываться с разрешениями и путем поиска, изменив init.sql
на это, но все равно не повезло:
CREATE DATABASE delivery;
create schema extensions;
-- make sure everybody can use everything in the extensions schema
grant usage on schema extensions to public;
grant execute on all functions in schema extensions to public;
-- include future extensions
alter default privileges in schema extensions
grant execute on functions to public;
alter default privileges in schema extensions
grant usage on types to public;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" schema extensions;
set search_path = extensions;