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

上一篇容器化开发环境已经简单的介绍了如何容器化开发环境。在开发过程中,很多时候都需要通过断点的方式来调试程序或定位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  


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

原文链接


喜欢 coding 喜欢大海。。。

606 声望
18 粉丝
0 条评论
推荐阅读
Golang 的测试有点怪
最近在学习Go。然后不禁想感叹,为什么有些小伙伴的Go测试可读性可以这么怪(cha)。说好的测试即文档呢?说好的测试边界呢?说好的Given When Then呢?是我功力不行吗?

aikin1阅读 1.8k

spring boot 锁
由于当前的项目中由于多线程操作同一个实体,会出现数据覆盖的问题,后保存的实体把先保存的实体的数据给覆盖了。于是查找了锁的实现的几种方式。但写到最后发现,其实自己可以写sql 更新需要更新的字段即可,这...

weiewiyi3阅读 9.2k

张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 717评论 2

封面图
Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...

backbp4阅读 9.7k评论 3

使用docker快速搭建xssPlatform测试平台实践
笔者之前给一些开发团队多次做Web安全开发培训,为了让培训的学员能够理解XSS原理和XSS的危害,将xssPlatform进行了更新,之前一直放在GitHub中;发现关注的人越来越多,很多人在安装的过程中遇到问题不知道怎么...

汤青松1阅读 25.8k

利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。

李明5阅读 901

记录本周问题
项目里两个地方都用到了hashmap。但是感觉自己用的时候并没有感觉非常的清晰。同时发现hashmap有线程不安全问题,而自己用的时候就是多线程来使用。于是在这里介绍一下。

weiewiyi5阅读 710

喜欢 coding 喜欢大海。。。

606 声望
18 粉丝
宣传栏