猿问

使用 http://localhost:port 在 docker 中运行 API 测试

有一个预订航班的应用程序,我们的团队正在实施集成以与航班预订应用程序进行交互。所以现在需要在 CI 环境中测试他们的 API。因此,我在我的 API 测试框架中创建了一个 Dockerfile:


FROM golang:1.13


ADD . /app


WORKDIR /app


RUN go mod download


CMD ["make", "test", "$URL=", "$INTEGRATION=", "$TESTTYPE=", "$TAGS="]

而且我还在集成仓库中创建了一个 docker-compose.yml 文件,我应该对其进行测试:


version: '3'


services:

  tests:

    image: int-tests:latest

    environment:

      - URL=http://localhost:3000/

      - INTEGRATION=pitane

      - TESTTYPE=integration

      - TAGS=quotes

我尝试使用 localhost 构建和运行集成测试。在本地,我可以在不使用 docker 的情况下做到这一点。但是在 docker 内部,我不能使用集成的 localhost 链接来调用他们的端点。有什么办法吗?这是我收到的错误消息:


msg="Post http://localhost:3000/v1/quote: dial tcp 127.0.0.1:3000: connect: connection refusedUnable to get response"



浮云间
浏览 150回答 2
2回答

蛊毒传说

msg="发布http://localhost:3000/v1/quote : 拨打 tcp 127.0.0.1:3000: connect: connection refusedUnable to get response"您正在尝试连接到容器本身。使用主机 IP 地址或network_mode: "host"UPD您可以找到您的主机 ip,ip route | awk '/default/ { print $3 }'然后在URL环境变量中使用此 ip。network_mode: "host"或者您可以在 docker-compose.yml中的所有设置中摆脱容器的网络隔离(虽然不是首选方式)https://docs.docker.com/compose/compose-file/#network_mode在这种情况下,localhost 将表示主机 localhost。host.docker.internal如果您使用 Mac(不是首选方式), 也可以使用https://docs.docker.com/docker-for-mac/networking/

一只甜甜圈

在 docker 文件中公开适当的端口(端口,其他人将连接到您的服务)EXPOSE 80如果您想在主机上访问该启动的容器,您必须将该端口映射到您的主机。您可以使用 docker 命令执行此操作:docker run -p 80:80 ....或使用 docker compose:    ports:       - '80:80'
随时随地看视频慕课网APP

相关分类

Go
我要回答