Intellij IDEA 远程调试部署在容器中的springboot项目

前言

之前整理过一篇如何利用Intellij IDEA 远程调试部署在远程服务器Tomcat中的Web应用。
链接地址:ntelliJ IDEA远程调试(Debug)Tomcat
但现在大多数应用都是springboot项目,且是直接java -jar形式运行的,而且都是容器化部署的,那么远程调试方式还是类似吗?
答案是肯定的。

验证

制作镜像

  1. 一个springboot web应用,名为security-cloud-product-1.0.0.jar,且对外提供Rest服务,端口为8181
  2. Dockerfile
FROM centos-openjdk:latest

MAINTAINER "fei.fuzeng"
ENV LANG en_US.UTF-8
USER root

RUN mkdir /home/seccloud
WORKDIR /home/seccloud
ADD security-cloud-product-1.0.0.jar /home/seccloud
ADD entrypoint.sh /home/seccloud
RUN chmod +x /home/seccloud/entrypoint.sh

EXPOSE 8181

ENTRYPOINT ["/home/seccloud/entrypoint.sh"]
  1. 启动脚本 entrypoint.sh ,注意这里有使用两个端口:5005和8181,一个远程调试端口,一个服务端口
#!/bin/bash
MAIN_PATH="/home/seccloud/"

cd ${MAIN_PATH}
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar security-cloud-product-*.jar  --server.port=8181

应用启动

准备工作准备好之后,执行命令制作镜像

docker build -t security-cloud-product:1.0 .

基于镜像启动应用

docker run -d -p 8181:8181 -p 5005:5005 --name product security-cloud-product:1.0

验证应用是否正常启动

  • 直接访问服务对外提供的Rest服务
  • 查看后台容器是否正常启动
docker ps -a

查看容器运行状态

注意事项

与其说是注意事项 不如说是自己踩得坑!

  1. 自定义容器启动脚本报错:exec user process caused “no such file or directory”
    原因是镜像的entrypoint设置的启动脚本格式是dos,在linux系统上用vi修改成unix格式即可
# vi filename
# :set ff  回车后看到当前文件的fileformat格式
# :set ff=unix 回车后输入:wq保存文件,重新build镜像即可。

参考文档

  • https://www.cnblogs.com/cf532088799/p/7719935.html

你可能感兴趣的:(Java)