【问题标题】:Error building docker image while trying to import sql dump to postgres container尝试将 sql 转储导入 postgres 容器时构建 docker 映像时出错
【发布时间】: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


    【解决方案1】:

    很明显,docker在构建镜像时无法识别其他容器的主机,直到执行docker run --net &lt;network&gt;才能与其他容器通信。

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      相关资源
      最近更新 更多