我尝试在Docker容器内运行的Postgres上安装pg_cron
,但得到此错误could not access file "pg_cron": No such file or directory
。有什么解决办法吗?
基于https://stackoverflow.com/a/51797554,我尝试了以下操作:
docker-compose.yml
version: '3.7'
services:
pg:
container_name: pg-container
image: postgres:11.5
environment:
POSTGRES_DB: "pgdb"
POSTGRES_USER: "pguser"
POSTGRES_PASSWORD: "pgpass"
volumes:
- ./:/docker-entrypoint-initdb.d
- pgstorage
ports:
- "5432:5432"
volumes:
pgstorage:
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'
cron.database_name='${POSTGRES_DB:-postgres}'
EOT
# Required to load pg_cron
pg_ctl restart
003-main.sql
CREATE EXTENSION pg_cron;
4条答案
按热度按时间wa7juj8i1#
从我所看到的,你没有安装pg_cron任何地方。由于它没有与默认的Postgres Docker镜像打包在一起,因此您必须注意这一点。
例如,通过扩展Image并在
docker-compose.yml
中使用build
条目。这对我很有效-它可能需要更多的优化。
yfwxisqw2#
建议的解决方案不适用于我新创建的容器。所以我是这样做的
此外,您可以将其他init文件放入init-db目录。
6ovsh4lw3#
对于那些正在寻找一个现成的形象,请尝试以下:
mfuanj7w4#
上面的东西对我都不起作用。最后使用以下程序:
在此目录中编辑Dockerfile为:
在那之后
运行它:
将
YourPassword
替换为您的密码。