我正在尝试为集成测试中包含的服务之一启用远程调试。大多数测试工作良好,但是如果测试失败,则很难调试其他服务之一。集成测试的(简化)结构如下:
服务A(正在测试的服务) -> GraphQL Service ->存根REST服务
我使用以下设置:
服务一个码头-Compose.yml
version: '3.5'
services:
rest-stubs:
image: rest-stubs:1.2.3
container_name: rest-stubs
ports:
- "8082:8080"
graphql-service:
image: graphql-service:1.2.3
container_name: graphql-service
ports:
- "8083:8080"
- "5005:5005"
environment:
- some.stub-url=http://rest-stubs:8080/some-stub-url图形库的文档-服务:
FROM graphql-service
EXPOSE 8080 8080
EXPOSE 5005 5005
ADD app/target/service-*-exec.jar /app/spring-boot-service.jar
CMD ["-java -agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n \
-jar /app/spring-boot-service.jar"]当我执行位于服务A中的集成测试时,在docker-compose.yml中定义的服务向上旋转。我本来希望能够在5005上连接到graphQL服务的远程调试端口,但是我收到了一个Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refused (Connection refused)异常。
有人知道我如何正确地远程调试码头服务吗?
发布于 2021-10-12 13:16:00
找到了答案;我试图在IntelliJ远程调试器中使用localhost:5005设置来连接容器,而不是容器的IP地址。
我使用this post中的答案获得容器的IP地址,并在Intellij的远程调试器对话框中使用该IP地址进行连接。
发布于 2021-10-12 12:49:42
公开只会向其他已链接的容器公开,例如网络中的其他服务,而不会将端口发布到主机。
你需要像这样发表它:
version: '3.5'
services:
rest-stubs:
image: rest-stubs:1.2.3
container_name: rest-stubs
ports:
- "8082:8080"
graphql-service:
image: graphql-service:1.2.3
container_name: graphql-service
ports:
- "8083:8080"
- "5005:5005"
environment:
- some.stub-url=http://rest-stubs:8080/some-stub-urlhttps://stackoverflow.com/questions/69540088
复制相似问题