Docker-Compose 客户端 API 调用服务器失败...默认网络服务别名不起作用?

Docker-Compose Client API call to Server fails... default network service alias not working?

我想知道如何解决这个问题!本质上,默认 Docker 网络上通过服务名称的动态路由不起作用。 :(

我曾考虑过让它使用静态 IP,但这可能比解决原始问题更有效。

docker-compose.yml

version: "3.8"
services:
  client:
    build: client
    ports: [3000]
    depends_on:
      - server
    volumes:
      - ./client:/app

  mongodb:
    image : mongo
    environment:
      - PUID=1000
      - PGID=1000
    ports: [27017]
    restart: unless-stopped
    volumes:
      - ./mongodb/database:/data/db

  server:
    build: server
    ports: [5000]
    restart: always
    depends_on:
      - mongodb
    volumes:
      - ./server:/app

如果我从客户端执行此 ping 测试,它将通过浏览器运行

http://0.0.0.0:49246/ping

但是,我真的希望它能以这种方式工作

http://server:5000/ping

帮忙?谢谢!

Web 应用程序代码在浏览器中运行,而不是在托管文件的服务器中运行。浏览器通常在主机上 运行。

听起来您希望服务器映射主机上的已知端口。尝试使用它将主机端口 5000 映射到 server 容器端口 5000...

server:
  build: server
  ports:
    - "5000:5000"
  # etc

并在您的网络应用程序代码中连接 http://localhost:5000

https://docs.docker.com/compose/compose-file/compose-file-v3/#ports


如果您希望您的网络应用程序代理请求(例如使用 Create React App proxy configuration),您将使用内部主机名,因为此操作是由 client 服务执行的。

"proxy": "http://server:5000"