![](/img/trans.png)
[英]Getting error "cURL error 7: Failed to connect to localhost port" when calling API from another container
[英]Getting error "ECONNREFUSED 127.0.0.1:80" when one docker container call API from another container
我正在对一个具有多种不同服务的应用程序进行 docker 化,并且我使用 Docker Compose 文件来为所有服务实现此单个 docker-compose.yml 文件,为每个服务实现一个 Dockerfile。
到目前为止,我已经成功地将所有这些服务容器化,但是当应用程序尝试登录“Auth Layer(NodeJS)”在“Backend(PHP)”API 上发送请求以进行一些数据处理时,我得到了一个问题"ECONNREFUSED 127.0.0.1:80" error but if I try the same API on Postman it works but not from "Auth Layer(NodeJS)" I have also tried to call some third party API and it also works fine in AuthLayer so what should成为问题,因为我是 Docker 的新手,我无法在几天内找到解决方案。
这是我的 docker.compose.yml 文件
services:
angular-service:
container_name: wms_frontend
build: ../frontend/.
ports:
- "4200:80"
php:
build:
context: .
image: wms-backend
networks:
- frontend
- backend
environment:
- MYSQL_HOST=wms-backend-mysql-app
- MYSQL_USER=wmsroot
- MYSQL_PASSWORD=pass
- MYSQL_DB=dbname
volumes:
- ./:/var/www/html/wms/backend
ports:
- "80:80"
container_name: wms-backend-php-app
mysql:
image: mysql:5.7
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_USER=wmsroot
- MYSQL_PASSWORD=pass
- MYSQL_DATABASE=dbname2
container_name: wms-backend-mysql-app
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.7
depends_on:
- mysql
networks:
- backend
ports:
- "40002:40002"
environment:
- PMA_HOST=wms-backend-mysql-app
- PMA_PORT= 3306
volumes:
- /sessions
container_name: wms-backend-phpmyadmin-app
app:
container_name: auth_layer
restart: always
build: ../../auth_layer/.
networks:
- backend
volumes:
- ../../auth_layer/./:/usr/src/app
- /usr/src/app/node_modules
ports:
- "4454:4454"
links:
- db
depends_on:
db:
condition: service_healthy
db:
image: mariadb
restart: always
ports:
- "3308:3306"
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD= YES
- MYSQL_DATABASE=auth_layer
- MYSQL_USER= root
- MYSQL_PASSWORD=
volumes:
- ../../auth_layer/dump/:/docker-entrypoint-initdb.d
networks:
- backend
healthcheck:
test: ["CMD", "mysql", "-h", "db","-u","root", "mysql", "-e", "select 1"]
interval: 1s
retries: 20
networks:
local:
driver: bridge
networks:
frontend:
backend:
当您的应用程序在 docker 容器中运行时, localhost
不再指向您的开发笔记本电脑(或服务器),而是指向容器本身。
由于每个应用程序都在单独的容器中运行,当前面访问到后面时,您不能使用localhost
。 由于localhost
指向前面的容器,而后面没有部署在那里。
在指定连接 url 时,您应该使用容器名称而不是localhost
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.