docker - 寻址父图像中使用的环境变量

时间:2018-04-16 05:29:00

标签: postgresql docker

我需要在plpythonu图片上创建postgres:10.3扩展名。为此,我使用安装命令扩展了图像:

FROM postgres:10.3

RUN apt update && apt install -y postgresql-plpython-10

现在我需要运行psql命令create extension plpythonu;。但此时postgres服务器尚未运行,因此在运行docker build .时出现错误:

Step 3/3 : RUN psql -c "create extension plpythonu;";
 ---> Running in 037066c120ea
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我如何适应此命令?还有一种方法可以做到这一点,而无需从原始的postgres图像中复制整个docker-entrypoint.sh吗?也许有一种方法可以在docker-compose中指定它?

1 个答案:

答案 0 :(得分:0)

当步骤2结束时,Postgres数据库关闭,这就是为什么在Step-3数据库中没有运行。 您可以将步骤2和步骤3组合在一起。

RUN apt update && \
    apt install -y postgresql-plpython-10 && \
    psql -c "create extension plpythonu;"

这意味着&& (逻辑和)如果先前的命令成功,那么只执行下一个命令。