为了账号安全,请及时绑定邮箱和手机立即绑定

docker 中的 Postgres 拒绝来自我的服务器的连接

docker 中的 Postgres 拒绝来自我的服务器的连接

Go
守候你守候我 2022-12-05 16:52:18
我有一个 Golang 服务器和在 docker compose 中运行的 Postgres 实例。出于某种原因,Postgres 拒绝连接。从我以前的所有搜索来看,通常问题是错字,没有暴露端口,有 SSL 等等,但我没有发生类似的事情并且仍然有这个问题version: "3.2"services:  ingress:    image: jwilder/nginx-proxy    ports:      - "3000:80"    volumes:      - /var/run/docker.sock:/tmp/docker.sock:ro  auth-service:    depends_on:      - rabbitmq      - auth-db      - ingress    build: ./auth    container_name: "auth-service"    ports:      - 3001:3000    environment:      - POSTGRES_USER=postgres      - POSTGRES_PASSWORD=postgres      - POSTGRES_HOST=auth-db      - POSTGRES_DB=auth-dev      - POSTGRES_PORT=5435      - PORT=3000      - RABBITMQ_USER=guest      - RABBITMQ_PASSWORD=guest      - RABBITMQ_HOST=rabbitmq      - RABBITMQ_PORT=5672      - VIRTUAL_HOST=api.twitchy.dev      - VIRTUAL_PATH=/v1/auth/    deploy:      restart_policy:        condition: on-failure        delay: 5s        max_attempts: 3        window: 120s    # networks:    #   - rabbitmq_net    #   - default  rabbitmq:    image: rabbitmq:3-management-alpine    container_name: "rabbitmq"    ports:      - 5672:5672      - 15672:15672    volumes:      - rabbitmq_data:/var/lib/rabbitmq/      - rabbitmq_log:/var/log/rabbitmq/    # networks:    #   - rabbitmq_net  auth-db:    image: postgres:14.1-alpine    restart: always    container_name: "auth-db"    environment:      - POSTGRES_USER=postgres      - POSTGRES_PASSWORD=postgres      - POSTGRES_DB=auth-dev    ports:      - "5435:5432"    volumes:      - db:/var/lib/postgresql/data  chat-db:    image: postgres:14.1-alpine    restart: always    container_name: "chat-db"    environment:      - POSTGRES_USER=postgres      - POSTGRES_PASSWORD=postgres      - POSTGRES_DB=chat-dev    ports:      - "5434:5432"    volumes:      - db:/var/lib/postgresql/data# networks:#   rabbitmq_net:#     driver: bridgevolumes:  db:    driver: local  rabbitmq_data:  rabbitmq_log:
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

当您在 docker-compose 中映射端口时,比如说"5435:5432",您正在将5435HOST 机器5432上的端口映射到 CONTAINER 上。但是,auth-service定义中的 db url 使用的是服务名称auth-db,因此您实际上是直接访问 db 容器,而不是通过主机。因为 db 容器不公开5435,所以您无法使用 port 进行连接5435。例如,如果您尝试从您的主机连接到数据库,您可能会使用 port5435localhost.



查看完整回答
反对 回复 2022-12-05
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号