由于最新的项目采用的是JDK11编写的, 而服务器上的还是JRE8, 所以想以后就使用Docker进行部署, 方便而且干净. 当然部署过程中还是遇到了很多小坑, 所以本篇文章记录了使用Docker部署JavaWeb项目的方法.
读了本文你将学会:
- 如何使用Docker部署已经打包好的Jar包
- 如何使用Docker在Tomcat等容器中部署War包
- ……
使用Docker部署你的JavaWeb项目
由于服务器上面安装了JRE8, 而新写的项目是以JDK11构建的, 但是又不想更改之前服务器的配置了, 所以打算这个项目开始就尝试使用Docker部署项目, 这一路上的艰辛谁知?!
本篇就带你探秘使用docker部署jar, war, dockerfile的全解析!
一. Docker部署Jar包
在目前前后端分离大火的背景下, 在使用Spring Boot构建Java Web项目时, 大部分都是打包成为Jar包, 而真正让项目跑起来只需要:
java -jar demo.jar
即可启动项目.
当然, 这是最简单的.
在使用dokcer部署项目时:
1. 首先拉取JER镜像
我自己也构建了JRE11的镜像在DockerHub上面, 可以通过:
docker pull jasonkay/jre11
来获取镜像.
或者: 你也可以尝试在DockerHub上搜索
openjdk
或者java
然后搜索相应的JRE版本.
2. 使用run命令让Jar包跑起来!
可以事先将待运行的jar包放在指定的文件夹下, 如我创建了一个目录: /usr/local/dev/jar_deploy
, 其他需要部署的Jar包可以放置在这个目录下方便管理!
sudo mv demo.jar /usr/local/dev/jar_deploy
然后通过run命令, 并指定docker运行时镜像与本地文件的映射:
sudo docker run -d -p 8080:8080 -v /usr/local/dev/jar_deploy/demo.jar:/usr/local/dev/jar_deploy/demo.jar --name demo jasonkay/jre11 java -jar /usr/local/dev/jar_deploy/demo.jar
命令解析:
-d
: 让docker在后台运行容器-p 8080:8080
:表示端口映射, 即 本机端口:容器内部端口;-v /usr/local/dev/jar_deploy/demo.jar:/usr/local/dev/jar_deploy/demo.jar
: 表示将本地的目录中的/usr/local/dev/jar_deploy/demo.jar映射到镜像中的/usr/local/dev/jar_deploy/demo.jar文件, 是通过复制完成的, 并且两个文件会保持同步, 即修改那个都一样!--name demo
: 指定运行的容器的名称为demo, 这样便于查找, 注意: 不可与已有的container重复;jasonkay/jre11 java
: 创建容器使用到的镜像;java -jar /usr/local/dev/jar_deploy/demo.jar
: 创建容器之后要执行的命令, 即运行项目!
此外还可以添加:
--restart=always
参数, 表示当 Docker 重启时,容器自动启动
一行命令即可完成项目的部署, 而且不需要再担心环境问题, 即使你是JDK6, JDK13, JDK100! 都可以通过pull下不同的镜像来部署你的项目!
二. Docker在Tomcat中部署War包
1. 拉取tomcat镜像
可以通过修改tag来获取你想要的tomcat版本, 如:
docker pull tomcat:tag
2. 启动并挂载目录
和上面一样, 可以通过-v参数指定需要挂载的目录, 如:
docker run -d -p 8080:8080 --name tomcat -v /usr/local/dev/docker_tomcat:/usr/local/tomcat/webapps --restart=always tomcat
与上面Jar包的部署类似, 关键是指定挂载目录在/usr/local/tomcat/webapps下!
执行之后, 即可看到, docker_tomcat目录下的war包已经解压完毕, 这是tomcat自动完成的!