我正在运行具有以下多个容器的应用程序。
feeder -是来自image node:alpine的简单nodejs容器
api -是具有来自图像节点:高山
的expressjs的nodejs容器ui-app -是来自图像节点:高山
的应用容器我正在尝试在ui-app中调用api服务,但出现以下错误
不确定是什么原因引起的问题
如果我以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
答案 0 :(得分:0)
只有在容器内时,才能将服务名称用作域名。如果是您的浏览器在打电话,它不知道api
是什么。在您的Web应用程序中,您应该将类似于env的基本URL设置为docker机器或localhost的ip。