【问题标题】:Calling service from one docker container to other container is causing net::ERR_NAME_NOT_RESOLVED从一个 docker 容器调用服务到另一个容器导致 net::ERR_NAME_NOT_RESOLVED
【发布时间】:2018-12-22 21:08:13
【问题描述】:

我正在运行具有多个容器的应用程序,如下所示..

feeder - 是一个简单的 nodejs 容器,来自 image node:alpine

api - 是 nodejs 容器,带有来自 image node:alpine 的 expressjs

ui-app - 来自图像节点的反应应用容器:alpine

我正在尝试在 ui-app 中调用 api 服务,但出现如下错误

image to Console Log

image to Console Log

不知道是什么原因造成的

如果我以http://192.168.99.100/ping 的身份访问服务,它可以工作(这是我的 docker 机器默认 IP)... 但是如果我使用像http://api:3200/ping 这样的容器名称,它就不起作用......?请帮忙..

以下是我的 docker-compose。

version: '3'

services:
  feeder:
    build: ./feeder
    container_name: feeder
    tty: true
    depends_on:
      - redis
    links:
      - redis
    environment:
      - IS_FROM_DOCKER=true
    ports:
      - "3100:3100"
    networks:
      - hmdanet        
  api:
    build: ./api
    container_name: api
    tty: true
    depends_on:
      - feeder
    links:
      - redis
    environment:
      - IS_FROM_DOCKER=true
    ports:
      - "3200:3200"
    networks:
      hmdanet:
        aliases:
          - "hmda-api"
  ui-app:
    build: ./ui-app
    container_name: ui-app
    tty: true
    depends_on:
      - api
    links:
      - api
    environment:
      - IS_FROM_DOCKER=true
    ports:
      - "3000:3000"
    networks:
      - hmdanet          
  redis:
    image: redis:latest    
    ports:
      - '6379:6379'
    networks:
      - hmdanet          
networks:
  hmdanet:
    driver: bridge

【问题讨论】:

    标签: node.js docker express docker-compose


    【解决方案1】:

    您只能在容器内使用服务名称作为域名。在您的情况下,是您的浏览器拨打电话,它不知道api 是什么。在您的网络应用程序中,您应该将基本 url 之类的环境设置为您的 docker 机器或 localhost 的 ip。

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      相关资源
      最近更新 更多