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

我有一个 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: bridge


volumes:

  db:

    driver: local

  rabbitmq_data:

  rabbitmq_log:



守候你守候我
浏览 126回答 1
1回答

波斯汪

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

相关分类

Go