pg_cron
kan alleen worden geladen als gedeelde bibliotheek. Je moet het specificeren in postgres.conf
het dossier. Aangezien alle scripts in docker-entrypoint-init.d
worden uitgevoerd nadat de postgres-server is gestart (met pg_ctl start
), alle wijzigingen in shared_preload_libraries
in postgres.conf
kan beschikbaar worden na herstart (met pg_ctl restart
).
Voorbeeld uit de echte wereld:
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;
Opmerking :
- volgorde van scriptuitvoering is van belang en wordt geordend op bestandsnaam
pg_cron
komt beschikbaar in db gespecificeerd metcron.database_name