我有一個 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 關注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消