【发布时间】:2017-01-26 01:09:43
【问题描述】:
我正在为连接到同一 docker 网络内的 postgres 容器的应用程序制作 Dockerfile。为了填充数据库,我首先在 Dockerfile 中安装 postgres 客户端和所有依赖项,然后尝试像这样执行 sql 转储:
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 中不可用,但事实并非如此。我什至在 /bin/sh shell 中 ping 了 postgres 并成功了。
【问题讨论】:
标签: postgresql shell docker containers dockerfile