【发布时间】:2018-03-07 12:07:52
【问题描述】:
我正在尝试测试 ASP。 NET Core 2 dockerized 应用程序在 VSTS 中。它是通过 docker-compose 在 docker 容器内设置的。测试通过存储在配置中的地址发出请求(或从环境变量中获取,如果已设置)。
现在,构建设置如下:
- 运行 compose 命令以恢复和发布应用。
- 运行 compose 以创建和运行 docker 容器。
- 运行 bash 脚本(如下所述)。
- 运行测试。
首先,我发现我不能在 VSTS 中使用http://localhost:port。它在我的本地机器上运行良好,但在服务器上却无法运行。
我发现这个article 指出需要使用容器的真实 IP 来访问它。我尝试了引用的question 中描述的两种方法,但都没有奏效。
- 使用
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id时,我得到Template parsing error: template: :1:24: executing "" at <.NetworkSettings.Net...>: map has no entry for key "NetworkSettings"(问题出在命令本身) - 当使用
docker inspect $(sudo docker ps | grep wiremocktest_microservice.gateway | head -c 12) | grep -e \"IPAddress\"\:[[:space:]]\"[0-2] | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'时,我实际上获得了IP 并可以将其传递给测试,但随后发生了一些奇怪的事情。即,它们开始超时。我试图在本地复制它,它确实如此。我对这个 IP 发出的每个请求都会超时(很容易在浏览器中检查)。
VSTS中访问容器需要使用什么地址,为什么不能使用localhost?
【问题讨论】:
-
构建定义的任务是什么?您能否分享 OneDirve 上的详细日志(将 system.debug 设置为 true,然后进行队列构建)
-
相关文件(如dockerfile)的详细代码是什么?
-
Dockerfile: pastebin.com/sScitR9A 不确定在哪里设置 system.debug,但基本上是:用“up”运行第一个 compose,用“up -d”运行第二个 compose,运行 bash 脚本获取容器的 IP,使用默认设置运行测试。
-
更新:从托管 linux 代理切换到本地 windows 代理 - 立即工作。这很奇怪。
-
使用 docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" container_name_or_id 获取 IP。 (将 ' 更改为 ")
标签: docker azure-devops asp.net-core-2.0