在postgres-alpine容器上安装pl / sh

时间:2019-04-24 12:25:46

标签: postgresql alpine

我有一个从镜像postgres:9.6-alpine在docker容器中运行的postgres服务器。我想编写一个执行一些sh命令的postgres函数。为此,我想像下面的函数一样声明语言plsh:

CREATE or REPLACE FUNCTION func2 (var1 text) RETURNS text AS '
#!/bin/bash
 touch /home/postgres/$1;
' LANGUAGE plsh;
commit;

我没有安装该语言,因为它是Postgres的外部项目。有没有办法在高山上安装它? 这是指向repo的链接。

2 个答案:

答案 0 :(得分:0)

是的,有可能。 plsh postgres扩展名应从source构建。

Dockerfile是:

FROM postgres:9.6-alpine
RUN apk add --no-cache git g++ make
RUN git clone https://github.com/petere/plsh && \
    cd plsh && \
    make && \
    make install

答案 1 :(得分:0)

Dockerfile用于PostgreSQL13

FROM postgres:13-alpine
RUN apk add --no-cache git g++ make clang llvm10
RUN git clone https://github.com/petere/plsh && \
    cd plsh &&   \
    make &&      \
    make install

构建图片docker build --tag plsh:13 .

旋转容器并对其进行测试

CREATE EXTENSION IF NOT EXISTS plsh;

CREATE OR REPLACE FUNCTION hello (who TEXT) RETURNS text
LANGUAGE plsh
AS $$
#!/bin/sh
echo "Hello, $1 !"
return 0;
$$;

SELECT hello(who:='world');