尝试将sql转储导入postgres容器时构建docker镜像时出错

时间:2017-01-26 01:09:44

标签: postgresql shell docker containers dockerfile

我正在为连接到同一个docker网络内的postgres容器的应用程序制作Dockerfile。为了填充数据库,在Dockerfile中,我首先安装postgres客户端和所有依赖项,然后尝试执行sql dump,如下所示:

RUN apt-get install python python-dev libpq-dev postgresql-client
RUN psql -h $SQL_HOST -U $SQL_USER -W $SQL_DB < some_dump.sql

我收到此错误:

The command '/bin/sh -c psql -h $SQL_HOST -U $SQL_USER -W $SQL_DB < some_dump.sql' returned a non-zero code: 2

变量$ SQL_HOST具有docker容器的名称,我可以ping postgres没有问题。

当我手动设置容器时,我可以执行以下任何问题:

psql -h $SQL_HOST -U $SQL_USER 
postgres=# 

甚至这个:

/bin/sh 
> psql -h $SQL_HOST -U $SQL_USER
postgres=# 

但是当我尝试连接到postgres(我猜测)Docker在构建图像时的方式时出现错误:

/bin/sh -c psql -h $SQL_HOST -U $SQL_USER

错误讯息:

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"?

我为何会收到此错误的任何想法?我的猜测是在/ bin / sh shell中没有env vars,但事实并非如此。我甚至在/ bin / sh shell中ping了postgres并成功了。

1 个答案:

答案 0 :(得分:0)

很明显,在构建映像时,docker无法识别其他容器的主机,直到您执行可以与其他容器通信的docker run --net <network>