pg_cron kan endast laddas som delat bibliotek. Du måste ange det i postgres.conf fil. Eftersom alla skript i docker-entrypoint-init.d exekveras efter att postgres-servern har startat (med pg_ctl start ), alla ändringar av shared_preload_libraries i postgres.conf kan bli tillgänglig efter omstart (med pg_ctl restart ).
Exempel från verkligheten:
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;
Meddelande :
- order för skriptkörning är viktig och ordnas efter filnamn
pg_cronblir tillgänglig i db specificeras medcron.database_name