1,概览
将 JavaWeb 项目部署到安装了 Docker 的 Linux 服务器上主要有两种方式:
- 将项目打包成 War 包,然后部署到 Docker 的 Tomcat 容器中
- 将项目打包成 Jar 包,然后使用 Docker 的 JDK 镜像和 Dockerfile 将其制作成 Docker 镜像
2,使用 Tomcat 容器部署
优点:操作方便
缺点:项目端口要和 Tomcat 端口对应,即一个项目要开启一个 Tomcat 容器
接下来开始实战:
-
拉取 Tomcat 镜像
-
准备 JavaWeb 项目
-
将 JavaWeb 项目打包成 War 包(注意要准备好 web.xml)
-
为了方便将文件改名
-
将 War 传到服务器
-
启动 Tomcat 容器(注意端口对应)
docker run -d -p 8080:8080 --name tomcat tomcat
-
踩坑!Tomcat 的扫描目录位于 webapps,但是容器里有 webapps 和 webapps.dist,我们需要把 webapps 删除掉,然后将 webapps.dist 重命名为 webapps(因为 webapps.dist 里有数据)
-
将 demo.War 复制到 Tomcat 容器内的 webapps 目录,并重启容器
-
测试
3,使用 Dockerfile 打包成镜像
优点:使用的是类命令行启动,无需部署到 Tomcat 中
缺点:操作复杂,需要了解 Dockerfile 的使用
接下来开始实战:
-
拉取 Java:8-alpine 镜像(用来生成项目镜像)
-
打包项目为 Jar 包
-
将 Jar 包上传到服务器并在其所在目录新建 Dockerfile 文件(Dockerfile 文件没有后缀且名字必须 D 大写,f 小写)
-
运行 docker 命令生成镜像(. 表示在当前目录寻找 Dockerfile 文件)
docker build -t springdemo:1.0 .
-
查看生成的镜像并运行
-
测试