Docker使用tomcat部署java项目
一、JAVA项目打成war包
前提:数据库及表已经建立好
1、 先将项目放到 Linux 上某个目录下,如 /home/ubuntu/Project/pinter/pinter
注意:如果项目是 war 包形式的,需要先创建 pinter 文件夹,然后在文件夹内对 war 包进行解压:unzip pinter.war
最终目录结构
pinter
├── Dockerfile
├── pinter
│ ├── META_INF
│ ├── org
│ ├── WEB-INF
2、数据库配置 (数据库已经建好:CREATE DATABASE pinter CHARACTER SET utf8 COLLATE utf8_general_ci; 初始化数据
)
cd pinter/pinter/WEB-INF/classes
vi application.properties
修改配置信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://192.168.1.29:3306/pinter?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT spring.datasource.username=root spring.datasource.password=Admin#1234
二、编辑 Dockerfile 文件
FROM tomcat:8.5.43 ADD pinter /usr/local/tomcat/webapps RUN mkdir -p /usr/local/tomcat/webapps/pinter COPY ./pinter /usr/local/tomcat/webapps/pinter # 将 pinter 项目下面的文件复制到容器中 webapps/pinter 目录下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
Djava.rmi.server.hostname 后面是 Docker 所处的主机地址
8080是访问项目的端口
8971是jmx连接的端口,这个端口无法访问项目,但是必须设置
三、利用Dockerfile创建镜像
# 创建名为pinter的镜像,版本为v1 docker build -t pinter_image:v1 .
# 查看创建的镜像
docker images
四、利用镜像生成容器并后台运行,容器名为 pinter
docker run -it -d --name pinter -p 8080:8080 -p 8971:8971 -v /home/ubuntu/Project/pinter:/home/data pinter_image:v1
# 查看所有容器状态sudo docker ps
五、浏览器访问项目
http://{ip}:{port}/pinter
六、jvisualvm连接
控制台输入 jvisualvm 打开Java VisualVM
添加远程主机
在远程主机下添加 JMX链接
查看 JMX 链接数据