Docker PostgreSQL 9.6-安装扩展plpython3u(与分位数扩展冲突)
我正在尝试使用plpython安装PostgreSQL dockerised服务。我能够成功地构建映像,但当我运行容器时,出现以下错误: 错误:无法打开扩展名控制文件 “/usr/share/postgresql/9.5/extension/plpython3u.control”:没有这样的文件 或目录语句:创建扩展名“plpython3u”; psql:/docker entrypoint initdb.d/create_db.sql:7:错误:无法 打开扩展名控制文件 “/usr/share/postgresql/9.5/extension/plpython3u.control”:没有这样的文件 或目录 我的目录布局: Dockerfile 创建_db.sql [[编辑]] 以下是我用于构建和运行容器的命令:Docker PostgreSQL 9.6-安装扩展plpython3u(与分位数扩展冲突),postgresql,docker,Postgresql,Docker,我正在尝试使用plpython安装PostgreSQL dockerised服务。我能够成功地构建映像,但当我运行容器时,出现以下错误: 错误:无法打开扩展名控制文件 “/usr/share/postgresql/9.5/extension/plpython3u.control”:没有这样的文件 或目录语句:创建扩展名“plpython3u”; psql:/docker entrypoint initdb.d/create_db.sql:7:错误:无法 打开扩展名控制文件 “/usr/share
docker build -t scratch:pg .
docker run -it -rm scratch:pg
如何在停靠的PostgreSQL服务中安装plpython?我认为您的错误是因为初始错误的
CMD
,它指向此映像的PostgreSQL的错误位置(9.5 vs 9.6)
但是,我认为我已经发现了为什么不导入SQL的错误
此映像(at)的默认入口点
负责从/docker ENTRYPOINT initdb.d/
导入。由于您正在覆盖CMD
,并且它不等同于postgresql
,因此它将跳过此部分
默认的
ENTRYPOINT
应该执行您想要的操作。尝试删除您的CMD
我刚刚从头开始运行了这一切,似乎扩展已经成功创建。还有问题吗
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/create_db.sql
SET
CREATE EXTENSION
CREATE ROLE
CREATE DATABASE
GRANT
LOG: received fast shutdown request
waiting for server to shut down...LOG: aborting any active transactions
LOG: autovacuum launcher shutting down
LOG: shutting down
.LOG: database system is shut down
done
server stopped
PostgreSQL init process complete; ready for start up.
乍一看,它看起来像是一个版本混淆:
来自library/postgres:9.6
与/usr/share/postgresql/9.5/
(注意9.5 9.6)@FrankSchmitt是的,我也注意到了这一点。但是修改路径似乎并没有起到什么作用,有一次我在Dockerfile中使用了PostgreSQL 9.5映像-错误在所有这些更改中都持续存在-所以我猜这一定是另一回事。@HomunculusReticulli你有没有找到解决方法?我想你可能是误解了这个问题。问题不在于SQL脚本没有被导入(它是)。这是因为它在通过CREATE EXTENSION
语句(在导入的SQL文件中)创建/安装plpython语言时失败了。但是你能更新你的错误信息吗?就目前的情况来看,错误似乎是错误的版本文件夹目标。实际上,我将坚持我的原始答案。我自己也测试过,它确实有效。因此,我猜您的docker run
命令正在覆盖某些内容(如用户)并导致错误。您能用您正在使用的docker run
命令更新您的原始问题吗?似乎在我尝试预先发送一个简单的可复制案例时,我在Dockerfile
和create\u database.sql
脚本中遗漏了一些相关信息。问题在于,如果同时安装了quantile
扩展,则尝试安装plpython
会失败。我已经在我的问题中添加了相关细节。似乎在我尝试发送一个简单的可复制案例时,我在我的Dockerfile
和create\u database.sql
脚本中遗漏了一些相关信息。问题在于,如果同时安装了quantile
扩展,则尝试安装plpython
会失败。我已经澄清了我的问题。
# Uncomment line below for debugging purposes
set client_min_messages TO debug1;
CREATE EXTENSION "quantile"
CREATE EXTENSION "plpython3u";
-- Create myappuser
CREATE ROLE myappuser LOGIN ENCRYPTED PASSWORD 'passw0rd123' NOINHERIT;
CREATE DATABASE only_foo_and_horses WITH ENCODING 'UTF8' TEMPLATE template1;
-- \l+
GRANT ALL PRIVILEGES ON DATABASE only_foo_and_horses TO myappuser;
-- Import only_foo_and_horses DDL and initialise database data
\c only_foo_and_horses;
\i /docker-entrypoint-initdb.d/schemas/DDL/db_schema_foo.sql;
-- # enable python in database
docker build -t scratch:pg .
docker run -it -rm scratch:pg
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/create_db.sql
SET
CREATE EXTENSION
CREATE ROLE
CREATE DATABASE
GRANT
LOG: received fast shutdown request
waiting for server to shut down...LOG: aborting any active transactions
LOG: autovacuum launcher shutting down
LOG: shutting down
.LOG: database system is shut down
done
server stopped
PostgreSQL init process complete; ready for start up.