Docker 中的 POSTMAN GET 错误(连接 ECONNREFUSED)
POSTMAN in Docker GET error (connect ECONNREFUSED)
我通过 docker 容器在 127.0.0.1:80 上有一个 UI 运行ning。我通过 Chrome 和 Postman Client 应用程序对此进行了测试,效果很好。
当我尝试从 Postman 客户端应用程序导出 GET 测试用例并通过单独的容器 运行 连接它时,我收到此错误:
GET 127.0.0.1:80 [errored]
connect ECONNREFUSED 127.0.0.1:80
这是我的 docker 撰写文件:
version: "3.7"
services:
web:
build: ui
ports:
- 80:80
depends_on:
- api
api:
build: app
environment:
- PORT=80
ports:
- 8020:80
test:
container_name: restful_booker_checks
build: test
image: postman_checks
depends_on:
- api
- web
这是我的 docker 测试用例文件:
FROM node:10-alpine3.11
RUN apk update && apk upgrade && \
apk --no-cache --update add gcc musl-dev ca-certificates curl && \
rm -rf /var/cache/apk/*
RUN npm install -g newman
COPY ./ /test
WORKDIR /test
CMD ["newman", "run", "OCR_POC_v2_tests.json"]
这是从 Postman 客户端应用导出的 json 文件:
{
"info": {
"_postman_id": "5e702694-fa82-4b9f-8b4e-49afd11330cc",
"name": "OCR_POC_v2_tests",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "21096887"
},
"item": [
{
"name": "get",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "127.0.0.1:80",
"host": [
"127",
"0",
"0",
"1"
],
"port": "80"
}
},
"response": []
}
]
}
当我运行以下命令时,它也运行良好:
newman run OCR_POC_v2_tests.json
所以只是在docker连接不通
docker-compose 创建一个将容器连接到的桥接网络。每个容器都可以通过它在网络上的服务名称来寻址。
您正在尝试连接到 127.0.0.1 或本地主机,在 docker 上下文中是 test
容器本身。
您需要连接到 web
,因此您的 URL 变为 http://web:80/
。我不知道您究竟需要如何更改导出的 Postman 文件才能完成此操作,但希望您能弄明白。
另请注意,在桥接网络上,您使用容器端口进行连接。 IE。在您的情况下,这将是 web
和 api
上的端口 80。如果您只需要从 docker 网络上的其他容器访问容器,则不需要映射端口。
我通过 docker 容器在 127.0.0.1:80 上有一个 UI 运行ning。我通过 Chrome 和 Postman Client 应用程序对此进行了测试,效果很好。 当我尝试从 Postman 客户端应用程序导出 GET 测试用例并通过单独的容器 运行 连接它时,我收到此错误:
GET 127.0.0.1:80 [errored]
connect ECONNREFUSED 127.0.0.1:80
这是我的 docker 撰写文件:
version: "3.7"
services:
web:
build: ui
ports:
- 80:80
depends_on:
- api
api:
build: app
environment:
- PORT=80
ports:
- 8020:80
test:
container_name: restful_booker_checks
build: test
image: postman_checks
depends_on:
- api
- web
这是我的 docker 测试用例文件:
FROM node:10-alpine3.11
RUN apk update && apk upgrade && \
apk --no-cache --update add gcc musl-dev ca-certificates curl && \
rm -rf /var/cache/apk/*
RUN npm install -g newman
COPY ./ /test
WORKDIR /test
CMD ["newman", "run", "OCR_POC_v2_tests.json"]
这是从 Postman 客户端应用导出的 json 文件:
{
"info": {
"_postman_id": "5e702694-fa82-4b9f-8b4e-49afd11330cc",
"name": "OCR_POC_v2_tests",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "21096887"
},
"item": [
{
"name": "get",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "127.0.0.1:80",
"host": [
"127",
"0",
"0",
"1"
],
"port": "80"
}
},
"response": []
}
]
}
当我运行以下命令时,它也运行良好:
newman run OCR_POC_v2_tests.json
所以只是在docker连接不通
docker-compose 创建一个将容器连接到的桥接网络。每个容器都可以通过它在网络上的服务名称来寻址。
您正在尝试连接到 127.0.0.1 或本地主机,在 docker 上下文中是 test
容器本身。
您需要连接到 web
,因此您的 URL 变为 http://web:80/
。我不知道您究竟需要如何更改导出的 Postman 文件才能完成此操作,但希望您能弄明白。
另请注意,在桥接网络上,您使用容器端口进行连接。 IE。在您的情况下,这将是 web
和 api
上的端口 80。如果您只需要从 docker 网络上的其他容器访问容器,则不需要映射端口。