java - 无法在 docker 容器之间通信 - 连接被拒绝

标签 java spring docker docker-compose

我在 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 是实际容器的端口。查看更多信息here .

关于java - 无法在 docker 容器之间通信 - 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60192821/

相关文章:

java - Uni<Void> 如何在 REST 调用中获得失败或成功响应

java - 使用java使用AWS电子邮件模板(批量电子邮件)

java - c :out tag did not show result

java - 如何避免 Selenium 中的 “StaleElementReferenceException” ?

Spring + Gulp 用户引用

java - 一个微服务如何使用另一个微服务的安全配置

docker - 无法在 Windows 10 中启动 Docker - 引发 Hyper-V 错误

docker - 如何调试在Docker容器中运行的多个进程?

docker - 在 docker 中获取 apereo/cas 以从白名单进行身份验证

java - 将十六进制字符串转换为字节中的二进制字符串会抛出 NumberFormatException