首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到docker组合服务之间的Postgres数据库

问无法连接到docker组合服务之间的Postgres数据库
EN

Stack Overflow用户
提问于 2018-02-07 18:12:44
回答 2查看 1.4K关注 0票数 0

我正在尝试使用docker compose连接postgresdb服务和nodejs web服务。

我的docker-compose.yml文件

代码语言:javascript
复制
version: "3"                                                                                                                                                                                                                                                                                                                  
services:                                                                                                                                                                                                                                                                                                                     
  web:                                                                                                                                                                                                                                                                                                                        
      build: ./                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
      ports:                                                                                                                                                                                                                                                                                                                  
       - "40000:3000"                                                                                                                                                                                                                                                                                                        
      depends_on:                                                                                                                                                                                                                                                                                                                  
        - postgres
  postgres:                                                                                                                                                                                                                                                                                                                   
      image: kartoza/postgis:9.6-2.4                                                                                                                                                                                                                                                                                          
      restart: always                                                                                                                                                                                                                                                                                                         
      volumes:                                                                                                                                                                                                                                                                                                                
        - postgresdata:/data/db                                                                                                                                                                                                                                                                                               
      environment:                                                                                                                                                                                                                                                                                                            
        - POSTGRES_PASS=password                                                                                                                                                                                                                                                                                              
        - POSTGRES_DBNAME=sticki                                                                                                                                                                                                                                                                                              
        - POSTGRES_USER=renga                                                                                                                                                                                                                                                                                                 
        - ALLOW_IP_RANGE=0.0.0.0/0                                                                                                                                                                                                                                                                                            
      ports:                                                                                                                                                                                                                                                                                                                  
        - "1000:5432"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
volumes:                                                                                                                                                                                                                                                                                                                      
  postgresdata:                                                                                                                                                                                                                                                                                                               

因此,当我在根目录中执行docker-compose up时,两个服务都在运行,并且我可以使用localhost:40000访问web服务,使用localhost:1000上的postico访问postgres服务

但在Node Web服务中,我编写了使用Sequelize访问postgres的代码

代码语言:javascript
复制
const sequelize = new Sequelize('sticki', 'renga', 'password', {
  host: 'postgres',
  dialect: 'postgres',
});

但是我得到了以下错误

代码语言:javascript
复制
SequelizeConnectionRefusedError: connect ECONNREFUSED 172.18.0.2:1000

为什么postgres连接到172.18.0.2而不是localhost(0.0.0.0)?我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-07 18:19:29

对于您的web容器,postgres是在compose as a service中定义的DNS名。它通过docker内部DNS和网络获取postgres DNS IP地址,这就是为什么它解析为172.18.0.2。如果你去web容器& ping postgres,你会得到相同的IP。

作为修复,配置您的节点服务以连接到端口5432上的主机postgres,因为它是容器端口。端口1000是主机端口,如果您想使用端口1000,请配置节点服务连接到您的MACHINE_IP:1000。

容器中的PS - Localhost指的是容器本身&没有其他含义。

票数 3
EN

Stack Overflow用户

发布于 2018-12-17 19:54:32

服务名称取自container_name -这是固定的。在您的情况下,您没有该名称,名称是从docker-compose.yml是+_+服务名称+ _1的文件夹创建的。使用此DNS名称,您可以在docker-compose将创建的默认网络上访问您的服务,从一个服务访问另一个服务。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48661104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档