我已经创建了一个在端口5432上本地运行的Postgres数据库。该数据库位于Docker容器中。当我尝试将此数据库与SpiceDB(另一个Docker容器)连接时,我收到错误消息。
"error":"failed to create datastore: unable to instantiate datastore:
failed to connect to `host=localhost user=postgres database=spicedb`:
dial error (dial tcp [::1]:5432: connect: cannot assign requested address)",
"time":"2022-05-18T07:48:10Z","message":
"terminated with errors"
数据库名为“spicedb”,没有任何表。有什么想法如何正确地连接SpiceDB与Postgres?
x一个一个一个一个x一个一个二个x
2条答案
按热度按时间yks3o0rb1#
如果它们在两个不同的容器中,你将不能使用
localhost
作为主机名,你应该使用一个用户定义的桥网络,并通过容器名来寻址postgres示例。Docker的文档如下:https://docs.docker.com/network/bridge/
创建网桥网络:
在网络上使用容器名称运行postgres:
运行SpiceDB并使用容器名作为postgres的主机名。
gojuced72#
不要忘记在最后一个命令之前启动SpiceDB也运行migrate命令,我真的很难猜测docker,因为它在文档中丢失(幸运的是,我设法通过启发形式OpenFGA命令做到这一点):
PS:同样在Windows Docker上,--datastore-conn-uri连接字符串可能无法与“或”一起使用,但可以直接将其放在没有任何撇号的位置。
PS PS:我仍然有一个问题,如果我关闭windows cmd在其中我启动了docker,容器被删除从docker容器列表,而不是刚刚被停止。因此,我不能再次从windows docker启动它,我只能每次启动一个新的,并保持CMD打开,如果我想使用docker。可能是一些问题与windows docker的docker图像。