容器化开发环境 - 如何断点调试容器中的应用

上一篇容器化开发环境已经简单的介绍了如何容器化开发环境。在开发过程中,很多时候都需要通过断点的方式来调试程序或定位BUG,那么如何断点调试运行在容器中的应用呢???

容器就像一个虚拟机,就像一个远程的服务器,要断点调试容器中的应用,就像要断点调试虚拟机和远程的服务器上的应用一样。如何配置一个可以远程断点调试的应用,每个语言,每个框架都有不同的方式,接下来介绍的例子使用的技术栈如下:

接下来会基于上一篇博客中的DEMO hello-dockerize 进行扩展。

  • clone code repo

    $ git clone https://github.com/aikin/hello-dockerize.git
  • 更新build.gradle文件,在文件中写入apply plugin: "application"

    /*
      remote debug setup
     */
    applicationDefaultJvmArgs = [
            "-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n"
    ]
  • 更新docker-compose.yml文件

    web:
      build: ./dockerize
      environment:
        - LANG=C.UTF-8
        - TERM=xterm
        - DEBUG=true
      ports:
        - "8080:8080"
        - "5005:5005"
      volumes:
        - .:/hello-dockerize
  • 启动容器

    $ docker-compose run --service-ports web
  • 配置 IntelliJ IDEA

    • 打开工具栏Run --> Edit Configurations

    config

    • 添加新配置 点击加号,选择Remote,将 Host localhost 修改为docker-machine ip machine-name获取的IP,在/etc/hosts文件中绑定的本地域名dockerhost

    add

    • 在容器中启动服务:

    root@b73c06ebe59f:/hello-dockerize# ./gradlew bootRun --debug-jvm --stacktrace
    • 启动 IntelliJ IDEA 的 debugger 模式

      • 点击debug按钮

    debugger

    • 打开浏览器访问http://dockerhost:8080/hello-dockerize,如果你也看到下面的画面,恭喜你成功啦。

    debugging  


  
学会断点调试容器中的应用,再也不用为我那乌黑亮丽的头发着急啦!!!

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值