jvisualvm连接Docker中的Tomcat

目录

  • jvisualvm连接Docker中的Tomcat
    • 准备SpringBoot war包
      • 操作手顺
      • 注意
    • 准备Docker环境
    • 连接jvisualvm
      • 操作手顺
      • 注意

jvisualvm连接Docker中的Tomcat

本文将介绍如何使用jvisualvm连接上Docker中的Tomcat,使用到的SpringBoot只是一个简单返回字符串的项目,不包含任何数据库配置。

准备SpringBoot war包

操作手顺

  1. 在pom.xml里设置war
  2. 在pom.xml里找到spring-boot-starter-web依赖节点,将之间的内容删除,

<dependency>

    <groupId>org.springframework.bootgroupId>

    <artifactId>spring-boot-starter-webartifactId>

    

    <exclusions>

        <exclusion>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-tomcatartifactId>

        exclusion>

    exclusions>

dependency>

  1. 添加servlet-api的依赖

<dependency>

    <groupId>javax.servletgroupId>

    <artifactId>javax.servlet-apiartifactId>

    <version>4.0.1version>

    <scope>providedscope>

dependency>

  1. 修改启动项
@SpringBootApplication
public class SpringBootStartApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }

}
  1. 打包部署
    在pom.xml目录下,输入命令行mvn clean package,然后去项目的target目录下拿到war,复制到windows下的tomcat的webapps,启动tomcat,试一下war是否可以运行。

注意

访问项目的路径要加上项目名,比如我的项目打包以后的war是demo-0.0.1-SNAPSHOT.war,那么tomcat启动后访问的主路径就是 localhost:8080/demo-0.0.1-SNAPSHOT。

手顺来自:https://blog.csdn.net/qq_34381084/article/details/81485319.

准备Docker环境

  1. docker pull tomcat
  2. 创建Dockerfile,文件名必须是这个,没有后缀
FROM tomcat:latest

ADD demo-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/demo-0.0.1-SNAPSHOT.war
ENV CATALINA_OPTS="-Djava.rmi.server.hostname=ip  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8971 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.rmi.port=8971"
EXPOSE 8080 8971

/usr/local/tomcat/webapps是tomcat环境的路径

Djava.rmi.server.hostname后面是Docker所处的主机地址

8080是访问项目的端口

8971是jmx连接的端口,这个端口无法访问项目,但是必须设置

  1. 复制准备好的war和Dockerfile同一目录下
  2. 在上一步所在的路径下,docker build -t 镜像名称 .(点不能少)
  3. docker run --name 容器名称 -d -p 8080:8080 -p 8971:8971 上一步构建的镜像名称

连接jvisualvm

操作手顺

  1. 输入localhost:8080/demo-0.0.1-SNAPSHOT,查看是否正常运行
  2. 在Java\jdk1.8.0_192\bin路径下打开jvisualvm.exe
  3. 添加远程主机
  4. 在远程主机下添加JMX连接
    jvisualvm连接Docker中的Tomcat_第1张图片
    参考:https://blog.csdn.net/wang704987562/article/details/72782774

注意

Visual GC不能使用,也不能进行堆Dump,感觉功能整个都被阉割了,sad。

你可能感兴趣的:(Java,Spring,测试)