簡體   English   中英

無法在 docker 容器之間進行通信 - 連接被拒絕

[英]cannot communicate between docker container - connection refused

我在 docker compose 文件中定義了一堆 n 個服務:

version: "3.7"
services:
  db:
    ...
  backend:
    image: $IMAGE_DEV_BACKEND
    container_name: "backend"
    hostname: backend
    ports:
      - "8888:8080"
    depends_on:
      - db
    networks:
      - backend
  frontend:
    image: $IMAGE_DEV_FRONTEND
    container_name: "frontend"
    hostname: frontend
    depends_on:
      - backend
    networks:
      - backend
      - traefik_default
volumes:
  data:
networks:
  backend:
    driver: bridge
    external:
      name: backend
  traefik_default:
    driver: bridge
    external:
      name: traefik_default

所有容器都在同一個網絡中。

在前端 spring 應用程序中,我有以下 spring 配置:

backend.url=http://backend:8888當前端應用程序嘗試連接到后端時我得到

ERROR DefaultFormCommandBean:529 - Error while performing action "datastoreAction": I/O error on POST request for "http://backend:8888/oauth/token": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://backend:8888/oauth/token": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:674)

當我將主機的 IP 地址與 docker 守護程序一起使用時,一切正常,容器可以相互通信。

我該怎么做才能使其與容器名稱一起使用?

嘗試使用backend.url=http://backend:8080 端口 8888 用於從主機訪問后端,而 8080 是實際容器的端口。 在此處查看更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM