docker-compose 解析 url 中的主机名

its*_*ace 4 networking docker docker-compose

尝试环顾四周,但找不到任何接近我需要的东西。

我有一个 docker-compose 文件,其中包含一个 docker 容器 ( ),该文件通过解析主机名在其环境变量中web使用另一个容器的 IP ( ):api

version: '3'
services:
  web:
    build: ../client/
    ports:
      - "5000:5000"
      - "3000:3000"
    environment:
      REACT_APP_API_DEV: http://api:8000/server/graphql
  api:
    build: ../server/
    env_file:
      - server_variables.env
    ports:
      - "8000:8000"
  redis:
    image: "redis:alpine"
Run Code Online (Sandbox Code Playgroud)

我的问题是,web在运行时无法解析该变量。我可以在容器api内正常执行 ping 操作web,但http://api:8000无法正确解析。我还尝试将 HOST=api 设置为变量并手动构建 URI,但这也不起作用。

编辑:我添加了完整的 docker-compose.yml 文件以供参考。我可以从容器内部很好地解决问题curl,但我的应用程序似乎无法正确解决它。我正在使用 NodeJS 和 Reactapiweb

its*_*ace 6

好吧,我发现了问题。显然,我的web容器是从 URI 获取的apihttp://api:8000但我的浏览器不知道api是什么(只有容器知道)。

我按照此处建议的内容来解析我的计算机上的主机名,结果成功了。