gpt4 book ai didi

postgresql - 将 docker 服务连接到 docker 数据库容器时出现 Postgres ENOTFOUND 错误

转载 作者:行者123 更新时间:2023-12-02 19:02:49 33 4
gpt4 key购买 nike

我无法让我的容器(服务)之一通过 docker 连接到 postgres 数据库容器。它似乎在提示使用错误的数据库......(我正在使用带有'pg'和'pg-promise'库的node.js。)。

我的 postgres 连接信息

const pg = require('pg');
const pgp = require('pg-promise')();

var config = {
user: 'root',
password: 'myPassword',
database: 'myDb',
host: 'database',
port: 5432
};
const db = pgp(config);

docker 尝试连接数据库时出错
{ Error: getaddrinfo ENOTFOUND database database:5432
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'database',
host: 'database',
port: 5432 }

我知道默认情况下容器与服务名称具有相同的主机名,但这不起作用(我的服务名称是“数据库”)。有什么我想念的吗?

docker -compose.yml
version: '3'

services:
myapp:
build: My-App/
depends_on:
- 'database'
ports:
- '5000:5000'

database:
image: postgres:11.5

最佳答案

所以我最终找到了答案,所以我想我会分享:

Docker 无法自动连接到 Postgres 的原因是 Postgres 仍在初始化(并且在启动时没有接收到连接请求)。

我发现的一种解决方案是人为地延迟 Docker 的连接尝试(基本上等到 Postgres 准备好后再尝试连接)。

编辑:Docker-compose 版本 3 现在有关于如何控制首先启动哪些容器的文档:https://docs.docker.com/compose/startup-order/

关于postgresql - 将 docker 服务连接到 docker 数据库容器时出现 Postgres ENOTFOUND 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815266/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com