目前在java开发中,由于一套完整的项目所涉及到的微服务模块很多,要是按照传统的方式一个一个部署比较麻烦,所以很多情况下我们都会使用docker镜像的方式进行部署。当我们的应用部署好之后,若运行过程中出现问题,我们也可以借助Idea中的插件进行远程debug,快速定位问题所在。
一、Docker部署Springboot项目
1、安装docker插件
配置Docker信息
注:docker服务需要开放2375端口
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 说明:主要就是添加如下信息
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 配置完成之后重新加载配置并重启docker
systemctl daemon-reload
systemctl restart docker
注:需要关闭防火墙
2、初始化springboot项目并编写Dockerfile文件
源码链接如下:
源码地址
Dockerfile内容如下(可以根据自己需求调整):
# 该镜像需要依赖的基础镜像
FROM java:8
# 指定维护者的名字
MAINTAINER zhanghang
VOLUME /tmp
RUN echo "export LC_ALL=zh_CN.UTF-8" >> /etc/profile
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将当前目录下的jar包复制到docker容器的/目录下
ADD ./springboot-docker-0.0.1-SNAPSHOT.jar springboot-docker-0.0.1-SNAPSHOT.jar
RUN bash -c 'touch /springboot-docker-0.0.1-SNAPSHOT.jar'
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8022","/springboot-docker-0.0.1-SNAPSHOT.jar"]
说明:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8022是开启远程debug的端口,端口不能冲突
下面控制台可以看到build信息
也可以查看项目启动log信息
启动之后访问一下测试看看:
二、远程debug
端口使用-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8022配置的端口即可。
配置好之后启动,启动方式使用配置的远程debug方式启动:
如下则表示启动成功:
此时只需要在调试的地方打上断点,点击页面,就可以debug调试了: