错误:使用docker-compose服务器定义时获取地址信息失败

3
我正在构建一个包含React和Node的应用程序,使用Docker Compose。我的Docker Compose定义如下:
version: "3"
services:
  frontend:
    stdin_open: true
    container_name: firestore_manager
    build:
      context: ./client/firestore-app
      dockerfile: DockerFile
    image: rasilvap/firestore_manager
    ports:
      - "3000:3000"
    volumes:
      - ./client/firestore-app:/app
    environment:
      - BACKEND_HOST=backend
      - BACKEND_PORT=8081
    depends_on:
      - backend
  backend:
    container_name: firestore_manager_server
    build:
      context: ./server
      dockerfile: Dockerfile
    image: rasilvap/firestore_manager_server
    ports:
      - "8081:8081"
    volumes:
      - ./server:/app
    environment:
      - BACKEND_HOST=backend
      - BACKEND_PORT=8081

我试图使用在docker-compose文件中定义的backend前缀访问Node.js后端端点,但是我得到了一个Error: getaddrinfo ENOTFOUND firestore_manager_server错误,同样使用容器名称firestore_manager_server也出现了同样的问题。

正如您在下面的URL中看到的:

firestore_manager_server:8081/firestore?collection=test&field=nombre&value=xxxx
backend:8081/firestore?collection=test&field=nombre&value=xxxx

我使用localhost没有遇到任何问题。

下面是docker ps命令的结果:

enter image description here

有什么想法吗?


你的前端是否使用了 firestore_manager_server:8081 这个 URL? - abestrad
是的,但它正在显示这个错误。 - rasilvap
docker ps 的结果是什么? - abestrad
我已经编辑了问题并附上了结果。 - rasilvap
您的React应用程序正在使用本地主机,输出中显示为0.0.0.0:3000,但它应该使用后端:localhost:8081,因为后端正在公开该端口并在不同的网络上运行。 - abestrad
你知道是否可以更改这个行为吗?我的意思是,我想使用容器名称作为服务器。 - rasilvap
1个回答

0

我认为你的URL应该是:

frontend:8081/firestore?collection=test&field=nombre&value=xxxx

而不是:

firestore_manager_server:8081/firestore?collection=test&field=nombre&value=xxxx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接