使用 docker-compose 网络内部的 url 访问另一个服务

Zer*_*erg 4 docker docker-compose

我正在使用 docker-compose 托管 3 个服务。

    version: '3.3'

services:

  service-a:
    container_name: service-a
    network_mode: default
    ports:
      - 8001:8001
      - 8080:8080


  service-b:
    container_name: service-b
    network_mode: default
    ports:
      - 8180:8080 
    links:
      - service-a:srv_a


  service-api:
    container_name: service-api
    environment: 
      - SERVER_URL=http://localhost:8180/myserver
     - 8001:8001
    links:
      - service-b: srv_b     
Run Code Online (Sandbox Code Playgroud)

但是,尽管有链接,但作为 Spring Boot 应用程序的 service-api 无法访问 service-b。

我可以在使用浏览器时做到这一点。

我可以做些什么来调查缺乏连接的原因?

是否应该在 server_url 变量中以某种方式使用链接?

Tho*_*eil 7

每个 Docker 容器都有自己的 IP 地址。从 service-api 容器的角度,localhost解析为自己的 IP 地址。

Docker-compose 为您的容器提供了从docker compose 服务名称解析其他容器 IP 地址的能力。

尝试:

  service-api:
    environment: 
      - SERVER_URL=http://service-b:8080/myserver

Run Code Online (Sandbox Code Playgroud)

请注意,您需要连接到容器内部端口 ( 8080) 而不是 docker 主机上发布的匹配端口 ( 8180)。