pg_cron
mogą być ładowane tylko jako biblioteka współdzielona. Musisz to określić w postgres.conf
plik. Ponieważ wszystkie skrypty w docker-entrypoint-init.d
są wykonywane po uruchomieniu serwera postgres (za pomocą pg_ctl start
), wszystkie zmiany w shared_preload_libraries
w postgres.conf
może stać się dostępny po restarcie (za pomocą pg_ctl restart
).
Przykład ze świata rzeczywistego:
002-setup.sh :
#!/bin/sh
# Remove last line "shared_preload_libraries='citus'"
sed -i '$ d' ${PGDATA}/postgresql.conf
cat <<EOT >> ${PGDATA}/postgresql.conf
shared_preload_libraries='pg_cron,citus'
cron.database_name='${POSTGRES_DB:-postgres}'
EOT
# Required to load pg_cron
pg_ctl restart
003-main.sql :
CREATE EXTENSION pg_cron;
Uwaga :
- kolejność wykonania skryptu ma znaczenie i jest uporządkowana według nazw plików
pg_cron
staje się dostępny w db określony za pomocącron.database_name