当前位置: 首页 > 知识库问答 >
问题:

Docker PostgreSQL 9.6-安装扩展plpython3u(与分位数扩展冲突)

万俟炯
2023-03-14

我正试图安装一个PostgreSQL docker化服务,与plpython。我能够成功地构建映像,但是当我来运行容器时,我得到以下错误:

错误:无法打开扩展控制文件"/usr/share/postgresql/9.5/扩展/plpython3u.control":没有这样的文件或目录声明:创建扩展"plpython3u"; psql:/docker-entrypoint-initdb. d/create_db.sql: 7:错误:无法打开扩展控制文件"/usr/share/postgresql/9.5/扩展名/plpython3u.control":没有这样的文件或目录

me@yourbox:~/Projects/experimental/docker/scratchdb$ tree
.
├── Dockerfile
└── sql
    ├── create_db.sql
    └── schemas
        └── DDL
            └── db_schema_foo.sql
FROM library/postgres:9.6
FROM zitsen/postgres-pgxn

RUN apt-get update \
 && apt-get install -y --no-install-recommends \
    python3 postgresql-plpython3-9.6

RUN pgxn install quantile

COPY sql /docker-entrypoint-initdb.d/ 

# Add VOLUMEs to allow backup of config, logs and databases
VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

# Set the default command to run when starting the container
# CMD ["/usr/lib/postgresql/9.6/bin/postgres", "-D", "/var/lib/postgresql/9.6/main", "-c", "config_file=/etc/postgresql/9.6/main/postgresql.conf"]
# 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

如何在停靠的PostgreSQL服务中安装plpython?

共有2个答案

汤飞
2023-03-14

我刚刚从头开始运行了这一切,似乎扩展已经成功创建。还有问题吗?

/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.
张岳
2023-03-14

我认为您的错误是因为初始错误的CMD,它指向了该图像的PostgreSQL错误位置(9.5 vs 9.6)。

但是,我认为我已经发现了为什么不导入SQL的错误。

此图像的默认入口点(位于https://github.com/docker-library/postgres/blob/bef8f02d1fe2bb4547280ba609f19abd20230180/9.6/docker-entrypoint.sh)负责从/docker entrypoint initdb导入。d/。由于您正在覆盖CMD,并且它不等同于postgresql,因此它将跳过此部分。

默认的ENTRYPOINT应该执行您想要的操作。尝试删除CMD

 类似资料:
  • 个人扩展文件夹 VS Code 会在个人扩展文件夹中.vscode/extensions来寻找扩展组件。不同的平台其文件夹所在的位置也不同: Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions Linux ~/.vscode/extensions 如果你想在VS Code 每次启动都能够加载你自己的扩展或者定制化信息,

  • 由于某些跟踪调试的PHP扩展大量使用了全局变量 可能会导致Swoole协程发生崩溃。请关闭以下相关扩展: xdebug phptrace aop molten xhprof phalcon(Swoole协程无法运行在 phalcon 框架中) 其中xdebug和phptrace可以用sdebug代替,xhprof、blackfire和molten可以用SwooleTracker 代替。

  • 注意 与Apache+PHP或者Nginx+PHP的运行模式不同,WorkerMan是基于PHP命令行 PHP CLI 运行的,使用的是不同的PHP可执行程序,使用的php.ini文件也可能不同。所以在网页中打印phpinfo()看到安装了某个扩展,不代表命令行的PHP CLI也安装了对应的扩展。 如何确定PHP CLI安装了哪些扩展 运行 php -m 会列出命令行 PHP CLI 已经安装的扩

  • 注意 与Apache+PHP或者Nginx+PHP的运行模式不同,WorkerMan是基于PHP命令行 PHP CLI 运行的,使用的是不同的PHP可执行程序,使用的php.ini文件也可能不同。所以在网页中打印phpinfo()看到安装了某个扩展,不代表命令行的PHP CLI也安装了对应的扩展。 如何确定PHP CLI安装了哪些扩展 运行 php -m 会列出命令行 PHP CLI 已经安装的扩

  • 问题内容: 这两个扩展功能有什么区别? 尽管jquery.extend有充分的文档记录,但是angular.extend缺少详细信息,并且注释没有提供答案。(https://docs.angularjs.org/api/ng/function/angular.extend)。 angular.extend是否也提供深层复制? 问题答案: 并且是 非常 相似的。它们都从一个或多个源对象到目标对象进行

  • 您好,我刚刚安装了composer的Yii2基本项目。我在苹果osx优胜美地10.10。尽管如此,我正试图按照Yii guide 2.0教程中的描述安装扩展,但我无法做到,原因是我不知道该把这条线放在哪里: PHPcomposer.phar需要--able-dist arturoliveira/yii2-tileslidemenu"*" 此方法表示在终端中找不到编写器。法尔。上面的线放在哪里? 当