pg_cron
solo se puede cargar como biblioteca compartida. Debes especificarlo en postgres.conf
expediente. Dado que todos los scripts en docker-entrypoint-init.d
se ejecutan después de que se inicia el servidor postgres (con pg_ctl start
), todos los cambios en shared_preload_libraries
en postgres.conf
puede estar disponible después de reiniciar (con pg_ctl restart
).
Ejemplo del mundo real:
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;
Aviso :
- el orden de ejecución del script importa y se ordena por nombres de archivo
pg_cron
está disponible en db especificado concron.database_name