docker-compose在url中解析主机名

时间:2019-03-21 06:22:53

标签: docker networking docker-compose

试图环顾四周,但找不到与我需要的东西接近的东西。

我有一个包含docker容器(web)的docker-compose文件,该容器通过解析主机名在其环境变量中使用另一个容器的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"

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

编辑:我添加了完整的docker-compose.yml文件以供参考。我可以在curl容器中进行api web的操作,但是我的应用似乎无法正确解决它。我正在使用NodeJS和React

2 个答案:

答案 0 :(得分:1)

您必须使用fs.readFile() documentation

链接它们
version: '3'
services:
  web:
    ...
    environment:
      - HOST: http://api:8000
    networks:
      - my-network
    ...
  api:
    networks:
      - my-network
    ...

networks:
  my-network:

答案 1 :(得分:0)

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

我遵循here中建议的内容来解析计算机上的主机名,该主机名已解决。