Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何修复:';Psql:无法连接到服务器:连接被拒绝';在gitlab ci的docker容器中使用Postgres时_Postgresql_Docker_Gitlab Ci_Psql_Postgresql 9.6 - Fatal编程技术网

Postgresql 如何修复:';Psql:无法连接到服务器:连接被拒绝';在gitlab ci的docker容器中使用Postgres时

Postgresql 如何修复:';Psql:无法连接到服务器:连接被拒绝';在gitlab ci的docker容器中使用Postgres时,postgresql,docker,gitlab-ci,psql,postgresql-9.6,Postgresql,Docker,Gitlab Ci,Psql,Postgresql 9.6,我目前正试图在Gitlab CI中运行fossology。Fossology需要一个外部数据库,该数据库可以从使用pg_dump创建的模式中设置。当我试图使用psql时,我得到了标题错误 目前,我有一个脚本,它设置了一个运行所需版本的postgres(9.6)的容器。然后,它尝试通过postgres容器中的psql通过docker exec运行.sql脚本。这样做时,它会得到标题错误 在发出psql语句时,我尝试同时指定端口和主机,这两种方法都不起作用。我尝试使用localhost 127.0.

我目前正试图在Gitlab CI中运行fossology。Fossology需要一个外部数据库,该数据库可以从使用pg_dump创建的模式中设置。当我试图使用psql时,我得到了标题错误

目前,我有一个脚本,它设置了一个运行所需版本的postgres(9.6)的容器。然后,它尝试通过postgres容器中的psql通过
docker exec
运行.sql脚本。这样做时,它会得到标题错误

在发出psql语句时,我尝试同时指定端口和主机,这两种方法都不起作用。我尝试使用localhost 127.0.0.1、postgres容器的IP地址和容器的名称作为主机。我尝试过用不同的脚本重写东西,但似乎没有任何效果

在大量的google搜索之后,许多人似乎有相同的错误消息,但原因不同,而且在使用docker容器托管数据库时也不常见

当我在命令行中运行脚本的内容时,我没有得到这个错误,脚本工作正常,我可以连接到Fossology。只有在Gitlab CI中尝试执行相同操作时,问题才会出现

在Mac上使用命令行时工作的步骤顺序(即逐行粘贴):

#创建空白数据库并将其托管在docker容器中
docker run-d--name fossdb-p5432:5432 postgres:9.6
docker cp/fossology\u db\u schema.sql fossdb:/fossy.sql
docker exec-it fossdb bash
psql postgres-U postgres
#创建数据库使用fossology所需的用户
使用密码“fossy”创建用户fossy;
创建数据库;
向fossy授予数据库fossology的所有特权;
\q
#在托管的空白数据库中构建fossology数据库
psql fossology
我在GitLab CI中的尝试:

#使用postgres图像创建容器
docker run-d——名称fossdb-p5432:5432——网络foss-net postgres:9.6
#创建空白数据库(此处出现错误)
docker exec fossdb psql-h$(docker inspect--format={{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}fossdb)-f./createBlank.sql-U postgres
#从模式构建化石数据库
docker exec fossdb psql-h$(docker inspect--format={{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}fossdb)fossology<./schema.sql-U postgres
createBlank.sql:

使用密码“fossy”创建用户fossy;
创建数据库;
向fossy授予数据库fossology的所有特权;
预期结果:运行createBlank.sql创建一个名为fossology的空白数据库,然后根据模式构建fossology数据库

实际结果:psql:无法连接到服务器:连接被拒绝 服务器是否在主机“172.19.0.2”上运行并接受
端口5432上的TCP/IP连接?

您确定已完全设置postgres吗

您可以执行一些快速检查:

(对不起,是你干的。转到建议2)

建议1:你有没有告诉postgres有一个用户有密码?(createuser命令)

建议2:你有没有告诉postgres用户可以连接,以及如何连接?(tcp或本地套接字)


非常感谢您的回复!我正试图在createBlank.sql文件中创建一个用户,因为问题之一是,在没有psql的情况下运行
docker exe
时,容器通常无法识别sql命令。我将用createBlank文件更新我的帖子:)按照你说的做:
createuser:无法连接到数据库postgres:无法连接到服务器:没有这样的文件或目录是在本地运行并接受Unix域套接字连接的服务器“/var/run/postgresql/.s.PGSQL.5432”
(我现在将尝试使用您的第二个建议)好的,请确保您知道如何连接:TCP/IP或unix域套接字。我不是docker人员,但我希望这将是一台不同的机器,因此将是一台不同的IP tp连接到。这意味着您必须在pg_hba.conf中添加一行以实现这一点。