pg_cron
kan kun indlæses som delt bibliotek. Du skal angive det i postgres.conf
fil. Da alle scripts i docker-entrypoint-init.d
udføres efter at postgres-serveren er startet (med pg_ctl start
), alle ændringer til shared_preload_libraries
i postgres.conf
kan blive tilgængelig efter genstart (med pg_ctl restart
).
Eksempel fra den virkelige verden:
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;
Bemærk :
- scriptudførelsesrækkefølgen er vigtig og er ordnet efter filnavne
pg_cron
bliver tilgængelig i db angivet medcron.database_name