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。在您的情况下,这将是 webapi 上的端口 80。如果您只需要从 docker 网络上的其他容器访问容器,则不需要映射端口。