最近很多小伙伴都在问dockertomcat部署war包报错:JVMCFRE003badmajorversion;和dockerfiletomcatwar这两个问题,那么本篇文章就来给大家详细解答一下
最近很多小伙伴都在问docker tomcat 部署war包 报错 : JVMCFRE003 bad major version;和dockerfile tomcat war这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展003-tomcat配置文件-server、tomcat-users、2019-09-20 docker 安装Tomcat ,部署war包、centos 7 中安装 docker和创建 tomcat容器并部署web应用、docker tomcat jvm 使用 visualVM监控等相关知识,下面开始了哦!
本文目录一览:- docker tomcat 部署war包 报错 : JVMCFRE003 bad major version;(dockerfile tomcat war)
- 003-tomcat配置文件-server、tomcat-users
- 2019-09-20 docker 安装Tomcat ,部署war包
- centos 7 中安装 docker和创建 tomcat容器并部署web应用
- docker tomcat jvm 使用 visualVM监控
docker tomcat 部署war包 报错 : JVMCFRE003 bad major version;(dockerfile tomcat war)
原因是因为jdk版本不一致
这是docker 引擎中tomcat容器内部的jdk版本
(我的idea jdk版本)查看idea中jdk版本(maven…project Structure…java compiler中改变jdk版本)
报错
ok
003-tomcat配置文件-server、tomcat-users
1、server.xml讲解
位于conf下
<?xml version="1.0" encoding="UTF-8"?> <!-- Server代表一个 Tomcat 实例。可以包含一个或多个 Services,其中每个Service都有自己的Engines和Connectors。 port="8005"指定一个端口,这个端口负责监听关闭tomcat的请求 --> <Server port="8005" shutdown="SHUTDOWN"> <!-- 监听器 --> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <!-- 全局命名资源,定义了UserDatabase的一个JNDI(java命名和目录接口),通过pathname的文件得到一个用户授权的内存数据库 --> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <!-- Service它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素 --> <Service name="Catalina"> <!-- 每个Service可以有一个或多个连接器<Connector>元素, 第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定 义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求. --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- 每个Service只能有一个<Engine>元素 --> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <!-- 默认host配置,有几个域名就配置几个Host,但是这种只能是同一个端口号 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Tomcat的访问日志,默认可以关闭掉它,它会在logs文件里生成localhost_access_log的访问日志 --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="www.lhx.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/myweb1" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="hzg_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
访问http://localhost:8080/aaa和http://www.lhx.com/8080/aaa效果一致。
1.1、Host节点下的appBase与Context下的docBase
appBase目录表示
这个目录下面的子目录将自动被部署为应用。
这个目录下面的.war文件将被自动解压缩并部署为应用
docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。
总结:
如果你想自己指定路径,那么应该在docBase里面
如果你想简单,那么直接把他们复制到appBase下面就行了
如果重复设置,也就是2个指向了一个目录,也能运行,但你的应用下面的每个子目录,其实是被部署为单独的应用的。
如你的应用为myApp, 放在了 d:\project\myApp 里面有2个子目录 d:\project\myApp\images 、d:\project\myApp\js
你可以通过
1 设置 appBase 指向 d:\project 来让系统自动部署
2 你可以手工指定docBase到 d:\project\myApp
3 如果你指定了 appBase到 d:\project\myApp 那么 d:\project\myApp\images这个将不再是普通的子目录,而是一个单独的虚拟目录,或者叫应用了。因为其被自动部署
d:\project\myApp\js 也一样的后果
<!--appBase 下面加了一行docBase,把路径配置到docBase中,把appBase为空,就OK了--> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="test1" docBase="D:\\JavaWebTest" debug="0" reloadable="true" crossContext="true"/>
访问:http//localhost:8080/test1/即可
1.2、不同于Catalina/localhost/xxx.xml
<?xml version="1.0" encoding="UTF-8"?> <Context docBase = "D:\\JavaWebTest\xxx" path="xxx"></Context>
在tomcat的conf/Catalina/localhost目录下创建一个xxx.xml文件
启动tomcat,然后访问:http//localhost:8080/xxx 即可
path:指访问路径
docBase:指项目路径
当然也可指向
<?xml version="1.0" encoding="UTF-8"?> <Context docBase = "D:\\JavaWebTest\" ></Context>
直接访问 :http//localhost:8080 即可
尽管也允许直接在server.xml文件中配置<Context>元素,但不提倡采用这种方式。
问题一、Tomcat 错误“inside the host appBase has been specified, and will be ignored”
错误信息:
警告: A docBase D:/Tomcat/webapps/myApp inside the host appBase has been specified, and will be ignored
错误原因:
假设要部署工程 "myApp", 放到了 ${catalina.home}/webapps 下。(这相当于隐性的定义了一个 docBase ,指向" ${catalina.home}/webapps/myApp " )。
同时在 /conf/Catalina/localhost 下建立了配置文件 myApp.xml ,在其中定义了 docBase , 目标指向 " ${catalina.home}/webapps/myApp " 。
这样,在 Tomcat 启动的时候,先找到了 myApp.xml 配置文件中定义的 docBase, 然后 Tomcat 自动检测 ${catalina.home}/webapps 下是否存放了合法的工程,并自动加载(根据配置文件的设置)。这样,Tomcat 又找到了一个相同的 docBase, 所以输出了错误信息。
解决办法:
将 myApp 工程 从 ${catalina.home}/webapps 目录移出, 然后 修改 配置文件 myApp.xml 指向该目录。
2、tomcat-users.xml:配置Tomcat的server的manager信息
<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="manager-gui"/> <user username="manager" password="manager" roles="manager-gui"/> </tomcat-users>
df
2019-09-20 docker 安装Tomcat ,部署war包
一、下载tomcat镜像
执行下面的命令,默认会下载最新版本的tomcat镜像
docker pull tomcat
二、启动tomcat
docker run -p 8081:8080 --name mytomcat
-p : 前边的8081是本机的端口,冒号后面的8080是docker容器的端口,tomcat默认是8080
–name : 是给容器起一个别名,方便使用,不然docker会默认给容器一个随机字符串的名称
执行完命令后,在命令行可以看到tomcat启动的日志。
- 在浏览器输入:http://192.168.99.100:8081/,即可看到熟悉的tomcat首页界面
启动的时候,映射本地文件,但这个好像没什么卵用,
docker run --name tomcat -p 8081:8080 -v /d/test/ljtao/test1:/urs/local/tomcat/wepapps -d tomcat
三、部署项目到tomcat (这个是关键)
把项目打包成一个war包文件,这里暂时假设名称为demo.war,然后在war包所在的目录,执行以下命令:
docker cp demo.war mytomcat:/usr/local/tomcat/webapps
也可以这样部署,当时前面的路径不能出现文件夹的名字包含空格的,否则会报错
docker cp d:\JavaTools\projectwar\test1.war mytomcat:/usr/local/tomcat/webapps
docker cp d:\JavaTools\projectwar\test1.war 646455ec77db:/usr/local/tomcat/webapps
646455ec77db 为tomcat的容器ID
war包会自动解压,然后执行下面命令重启容器
docker restart mytomcat
四、项目打包成war的处理
1、没有导出classes的文件出来,
解决:先用maven clean掉,再package
2、直到这个项目的目录下有这些文件
centos 7 中安装 docker和创建 tomcat容器并部署web应用
在 CentOS 7 中安装 Docker 和创建 Tomcat 容器并部署Web应用
一般部署Web应用都需要安装数据库,比如 MysqL 和 Redis,MysqL 和 Redis 属于多个Web应用公用的系统,所以就不需要安装到 Docker 里了,直接在操作系统里安装就好。所以,本文只讲解如何在 Docker 里创建 Tomcat 容器并部署Web应用,那么有人会问,在 Docker 里运行的应用如何访问安装在操作系统里的数据库呢?实践证明:在 Docker 容器里运行的Web应用可以直接访问安装在操作系统里的数据库(比如 MysqL 和 Redis),不需要任何特殊配置。
一、安装 Docker
1. 检查操作系统内核版本
检查操作系统内核版本,据说必须是3.10及以上。
# uname -r
3.10.0-862.9.1.el7.x86_64
2. 安装 Docker
使用 yum 命令安装 Docker。
# yum install docker
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.huaweicloud.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.nwsuaf.edu.cn
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/2): extras/7/x86_64/primary_db | 205 kB 00:00
(2/2): updates/7/x86_64/primary_db | 6.0 MB 00:00
Resolving Dependencies
... ...
Complete!
3. 启动 Docker
[root@localhost /]# systemctl start docker
4. 查看 Docker 版本
# docker -v
Docker version 1.13.1,build 8633870/1.13.1
5. 设置开机自启动 Docker
# systemctl enable docker
二、安装 Tomcat 并部署WAR工程
1. 看 Docker 支持哪些版本的 Tomcat
打开 https://hub.docker.com/r/library/tomcat/ 查看 Docker 都支持哪些版本的Tocmat。
2. 在 Docker 里安装 Tomcat
在 Docker 里安装 Tomcat,拉取 Tomcat 镜像,不指定版本就是默认安装最新版,这里安装 8.5.35 版的。
# docker pull tomcat:8.5.35
Trying to pull repository docker.io/library/tomcat ...
8.5.35: Pulling from docker.io/library/tomcat
bc9ab73e5b14: Pull complete
193a6306c92a: Pull complete
e5c3f8c317dc: Pull complete
d21441932c53: Pull complete
fa76b0d25092: Pull complete
346fd8610875: Pull complete
3ca5d6af9022: Pull complete
c06cfa2cea32: Pull complete
205950a5a114: Pull complete
6332a55c669e: Pull complete
723a722311b8: Pull complete
f5b82bb44c57: Pull complete
Digest: sha256:1b18333c03f68a64eb5dcc246984e89cf2d6737b04d95aa34cd337d8abfe796e
Status: Downloaded newer image for docker.io/tomcat:8.5.35
3. 查看本地镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat 8.5.35 6759d91a032b 6 days ago 463 MB
4. 基于镜像新建一个 Tomcat 容器并启动
注意,命令后面的 6759d91a032b 是前面拉取的 Tomcat 镜像ID!实践证明,如果用镜像名而不用镜像ID,那么就会自动拉取最新版的镜像使用,而不是刚才手动拉取的 8.5.35 版本的镜像。
# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -d -p 8080:8080 6759d91a032b
Unable to find image 'tomcat:latest' locally
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
Digest: sha256:1b18333c03f68a64eb5dcc246984e89cf2d6737b04d95aa34cd337d8abfe796e
Status: Downloaded newer image for docker.io/tomcat:latest
e3274a72e8d62a0f3022d3201405ce586147b3031c1232452d001ee41fb9c938
其中 “-v /etc/localtime:/etc/localtime:ro” 表示让容器使用宿主机的时间时区。
-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。
注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉。
如果想把 Tomcat 的 webapps 目录也挂载到宿主机目录(比如挂载到 /data/webapps),那么就是下面这样,需要再写个 -v 选项:
# docker run --name tomcat8080 -v /etc/localtime:/etc/localtime:ro -v /data/webapps:/usr/local/tomcat/webapps:rw -d -p 8080:8080 6759d91a032b
这时查看宿主机目录(/data/webapps)是空的,进入容器查看 webapps 目录也是空的,放一个 WAR 包应用到宿主机目录(/data/webapps)下,一会 WAR 包解压生成一个同名的文件夹,说明挂载 webapps 目录成功。
查看容器:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
054f35167ec5 tomcat "catalina.sh run" 4 seconds ago Up 4 seconds 8080/tcp,0.0.0.0:8686->8686/tcp tomcat8080
查看宿主机时间:
# date
Wed Apr 10 10:16:45 CST 2019
进入容器查看时间:
# docker exec -it tomcat8080 /bin/bash
root@054f35167ec5:/usr/local/tomcat# date
Wed Apr 10 10:16:50 CST 2019
与宿主机的时间一致。
但是 Tomcat 使用的时区还需要单独设置一下,否则部署在 Tomcat 里的工程取到的时间可能不是 Docker 容器的时间。设置很简单,只需在 bin 目录下的 catalina.sh 文件里加上时区即可,如下。
进入容器:
# docker exec -it tomcat8080 /bin/bash
进入 bin 目录:
root@054f35167ec5:/usr/local/tomcat# cd bin/
root@054f35167ec5:/usr/local/tomcat/bin# ls
catalina.sh ......
先备份一下文件 catalina.sh 文件。
因为在容器内不能修改文件,那就把容器文件拷贝到宿主机修改,修改后再拷贝到容器覆盖原文件。
退出容器,把 Tomcat 容器 bin 目录下的 catalina.sh 拷贝到宿主机:
# docker cp tomcat8080:/usr/local/tomcat/bin/catalina.sh ./
在宿主机里编辑 catalina.sh 文件:
打开文件,找到 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS",在双引号后面加上 “-Duser.timezone=Asia/Shanghai”(当然要与前面内容用空格隔开),修改后是这样的 JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/Shanghai" 。
文件,然后重启 Tomcat 或重启容器。
5. 查看运行的 Tomcat 容器
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9653b878cac6 tomcat "catalina.sh run" 13 days ago Up 13 days 0.0.0.0:8080->8080/tcp tomcat8080
不加 -a 参数只能查看到运行中的容器,加上 -a 参数可以查看所有的容器。举例,如果上面的 Tomcat 容器是退出(Exited)状态,那么就需要加 -a 参数才能看到,如下:
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9653b878cac6 tomcat "catalina.sh run" 9 days ago Exited (143) 8 days ago tomcat8080
启动一个已存在的容器用 “start 容器ID” 命令,其中 “容器ID” 可以只写前面几位,Docker 能识别出是哪个容器即可。如下:
# docker start 965
965
再看容器已经启动了:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9653b878cac6 tomcat "catalina.sh run" 9 days ago Up 39 seconds 0.0.0.0:8080->8080/tcp tomcat8080
6. 试试用浏览器打开 Tomcat 界面
这时在浏览器输入 IP:8080 就可访问默认的 Tomcat 界面了。
7. 部署Web应用(WAR工程)
先学习下基本的操作命令。
获取容器的长ID(tomcat8080 是容器名):
# docker inspect -f '{{.Id}}' tomcat8080
9653b878cac63b0c22500834c81b3f0d892d7e201c298d58d7cc9fdd5387492e
进入容器(965是容器ID的前三位数,当然也可以多写几位,只要 Docker 能唯一识别容器即可):
# docker exec -it 965 /bin/bash
执行后直接进入容器,命令提示符由系统的转为容器的了,root@ 后面的“9653b878cac6”是容器ID(短ID),冒号后面的“/usr/local/tomcat”是容器目录,这个目录是 Docker 内的目录不是系统目录。如下:
root@9653b878cac6:/usr/local/tomcat# pwd
/usr/local/tomcat
root@9653b878cac6:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work
顺便删除 Tomcat 的 webapps 目录下的所有内容:
root@9653b878cac6:/usr/local/tomcat# cd webapps/
root@9653b878cac6:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@9653b878cac6:/usr/local/tomcat/webapps# rm -fr *
root@9653b878cac6:/usr/local/tomcat/webapps# ls
退出容器用 exit 命令:
root@9653b878cac6:/usr/local/tomcat/webapps# exit
exit
直接回到了系统,命令提示符由容器的转为系统的了:
[root@localhost /]#
下面开始部署Web应用,很简单就是拷贝WAR包文件到容器中。
将要部署的WAR包拷贝到 Tomcat 容器的 webapps 目录下(命令格式是“docker cp 本地文件 容器ID:容器路径”,其中容器ID可以只写长ID的前面几位):
# docker cp testdocker.war 965:/usr/local/tomcat/webapps/
进入容器看到了拷贝的WAR包文件:
# docker exec -it 965 /bin/bash
root@9653b878cac6:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work
root@9653b878cac6:/usr/local/tomcat# cd webapps/
root@9653b878cac6:/usr/local/tomcat/webapps# ls
testdocker testdocker.war
看到这个WAR包已经解压了,应用跑起来了。
8. 用浏览器访问部署的Web应用
打开浏览器输入 IP:8080/testdocker 就打开了部署的Web应用界面。
总结
以上是小编为你收集整理的centos 7 中安装 docker和创建 tomcat容器并部署web应用全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://blog.csdn.net/whatday
docker tomcat jvm 使用 visualVM监控
1. 建立基础镜像
FROM centos
MAINTAINER fengjian <fengjian@senyint.com>
ENV TZ "Asia/Shanghai"
ENV TERM xterm
ENV JAVA_HOME /data/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /data/tomcat
ENV CATALINA_BASE /data/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
RUN rm /etc/yum.repos.d/* -rf
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel.repo /etc/yum.repos.d/
RUN yum clean all
RUN yum -y install unzip net-tools bind-utils sysstat kde-l10n-Chinese telnet reinstall glibc-common
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL "zh_CN.UTF-8"
ADD localtime /etc/
ADD jdk.tar.gz /data
ADD tomcat.tar.gz /data
ADD profile /etc
ADD 20-nproc.conf /etc/security/limits.d/
ADD limits.conf /etc/security/
RUN mkdir -p /data/webserver
RUN mkdir -p /data/logs
2. tomcat/conf/catalina.sh 添加初始堆参数
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -server -Xms4096M -Xmx4096M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:-UseCounterDecay -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.rmi.port=18999 -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=192.168.200.10"
**其中 Djava.rmi.server.hostname= 192.168.200.10 为宿主机的IP地址。
3. 加入应用
FROM 192.168.200.10/source/tomcat8_jdk1.8_test
MAINTAINER fengjian <fengjian@senyint.com.com>
ADD webserver.tar.gz /data/webserver/
EXPOSE 80 18999
CMD ["/data/tomcat/bin/catalina.sh","run"]
4. 运行应用docker
docker run -d --name 1111 -p 50001:80 -p 18999:18999 192.168.200.10/source/gateway_test_jvm
5. 使用visualVM监控
二,
2. tomcat/conf/catalina.sh 添加初始堆参数
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -server -Xms4096M -Xmx4096M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:-UseCounterDecay -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:MaxTenuringThreshold=6 -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.rmi.port=18999 -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=192.168.20.174"
**其中 Djava.rmi.server.hostname= 192.168.20.174 为宿主机的IP地址。
部署在k8s中,使用nodePort 指定端口,端口与jmxremote.port 相同
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: gateway
namespace: senyint
spec:
selector:
matchLabels:
app: gateway
replicas: 1
template:
metadata:
labels:
app: gateway
spec:
nodeName: node1 #指定部署到 node1 上
containers:
- name: gateway
image: 192.168.200.10/source/gateway_test_jvm
resources:
limits:
cpu: 2
memory: 8192Mi
requests:
cpu: 100m
memory: 512Mi
ports:
- name: webport
containerPort: 80
- name: jvmport
containerPort: 31999
---
apiVersion: v1
kind: Service
metadata:
name: gateway
namespace: senyint
spec:
type: NodePort
ports:
- name: webport
port: 80
targetPort: 80
protocol: TCP
- name: jvmport
port: 31999
targetPort: 31999
protocol: TCP
nodePort: 31999
selector:
app: gateway
或者使用标签
kubectl label nodes node1 jvmmonitor=test
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: gateway
namespace: senyint
spec:
selector:
matchLabels:
app: gateway
replicas: 1
template:
metadata:
labels:
app: gateway
spec:
nodeSelector:
jvmmonitor: test
containers:
- name: gateway
image: 192.168.200.10/source/gateway_test_jvm
resources:
limits:
cpu: 2
memory: 8192Mi
requests:
cpu: 100m
memory: 512Mi
ports:
- name: webport
containerPort: 80
- name: jvmport
containerPort: 31999
---
apiVersion: v1
kind: Service
metadata:
name: gateway
namespace: senyint
spec:
type: NodePort
ports:
- name: webport
port: 80
targetPort: 80
protocol: TCP
- name: jvmport
port: 31999
targetPort: 31999
protocol: TCP
nodePort: 31999
selector:
app: gateway
今天关于docker tomcat 部署war包 报错 : JVMCFRE003 bad major version;和dockerfile tomcat war的讲解已经结束,谢谢您的阅读,如果想了解更多关于003-tomcat配置文件-server、tomcat-users、2019-09-20 docker 安装Tomcat ,部署war包、centos 7 中安装 docker和创建 tomcat容器并部署web应用、docker tomcat jvm 使用 visualVM监控的相关知识,请在本站搜索。
本文标签: