pg_cron
può essere caricato solo come libreria condivisa. Devi specificarlo in postgres.conf
file. Poiché tutti gli script in docker-entrypoint-init.d
vengono eseguiti dopo l'avvio del server postgres (con pg_ctl start
), tutte le modifiche a shared_preload_libraries
in postgres.conf
può diventare disponibile dopo il riavvio (con pg_ctl restart
).
Esempio nel mondo reale:
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;
Avviso :
- L'ordine di esecuzione dello script è importante ed è ordinato in base ai nomi dei file
pg_cron
diventa disponibile in db specificato concron.database_name