我有一个 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"
,您正在将5435
HOST 机器5432
上的端口映射到 CONTAINER 上。但是,auth-service
定义中的 db url 使用的是服务名称auth-db
,因此您实际上是直接访问 db 容器,而不是通过主机。因为 db 容器不公开5435
,所以您无法使用 port 进行连接5435
。例如,如果您尝试从您的主机连接到数据库,您可能会使用 port5435
和localhost
.
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消