首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试在docker-compose.yml中定义的服务

调试在docker-compose.yml中定义的服务
EN

Stack Overflow用户
提问于 2021-10-12 11:54:22
回答 2查看 720关注 0票数 0

我正在尝试为集成测试中包含的服务之一启用远程调试。大多数测试工作良好,但是如果测试失败,则很难调试其他服务之一。集成测试的(简化)结构如下:

服务A(正在测试的服务) -> GraphQL Service ->存根REST服务

我使用以下设置:

服务一个码头-Compose.yml

代码语言:javascript
复制
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

图形库的文档-服务:

代码语言:javascript
复制
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)异常。

有人知道我如何正确地远程调试码头服务吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-12 13:16:00

找到了答案;我试图在IntelliJ远程调试器中使用localhost:5005设置来连接容器,而不是容器的IP地址。

我使用this post中的答案获得容器的IP地址,并在Intellij的远程调试器对话框中使用该IP地址进行连接。

票数 0
EN

Stack Overflow用户

发布于 2021-10-12 12:49:42

公开只会向其他已链接的容器公开,例如网络中的其他服务,而不会将端口发布到主机

你需要像这样发表它:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69540088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档