本文将完全复制 “ Springboot基础知识(08)- spring-boot-starter-web(Web启动器)” 里的 SpringbootWeb 项目的代码和配置到新项目 SpringbootWebDocker。
在新项目 SpringbootWebDocker 的基础上,修改部分配置和代码,Jar 打包 SpringbootWebDocker 项目,并使用 Docker 部署 Jar 包。
1) 修改 pom.xml
2) 修改 src/main/resources/application.properties 文件
注:不要设置 server.address。
3) 修改 src/main/java/com/example/controller/IndexController.java 文件
菜单 View -> Tool Windows -> Maven -> SpringbootWebDocker -> Lifecycle -> Clean & Package
jar 包生成在目录 target/ 里
SpringbootWebDocker.jar
SpringbootWebDocker.jar.original
点击 IDEA 底部 Terminal 标签页,执行如下命令。
java -jar target/SpringbootWebDocker.jar
...
Spring boot web project
访问 http://localhost:9090/hello,页面显示:
Hello Page - SpringBoot Web Docker
注:SpringbootWebDocker.jar 包含依赖包,可以直接运行。SpringbootWebDocker.jar.original 里不包含依赖的包(要手动配置依赖环境),运行前要把文件名上的 “.original” 去掉。
打包的具体步骤可以参考 SpringbootWeb 项目的打包过程。
1) 部署环境
IP 地址(本地测试环境):192.168.0.10
操作系统:Linux CentOS 7.9
Linux 用户:创建 Linux 用户 docker 来完成下文的部署工作 (Root 权限或 Sudo 权限,用户目录 /home/docker)
Docker 版本:
注:搭建 Docker 环境可以参考 “Docker基础知识 (1) - Docker 架构、Docker 安装、Docker 镜像加速”。
CentOS 7.9 下不需要安装 Java 环境。
2) 创建 Dockerfile
创建 /home/docker 目录,把 SpringbootWebDocker.jar 上传到该目录。
创建 /home/docker/logs 文件夹存放日志文件,该路径与 SpringBoot 项目中 logging.file.path 设置的一致。
创建 home/docker/Dockerfile 文件,内容如下:
注:这里使用 Java 8 基础镜像来演示,建议实际应用中使用较新的 Java 版本,可以访问 https://hub.docker.com/_/openjdk/tags 查询。
3) 构建镜像
$ cd /home/docker
$ sudo docker build -t webdocker .
注:运行命令时,注意最后的 “.”,不要遗漏。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
webdocker latest 210d3e763d71 33 seconds ago 661MB
java 8 d23bdf5b1b1b 5 years ago 643MB
...
4) 创建并启动容器
$ sudo docker run -d -p 9090:9090 webdocker # 只指定端口
$ sudo docker run -d -p 9090:9090 --name webdocker -v /home/docker/logs:/home/docker/logs webdocker # 指定端口、容器名、参数等
$ sudo docker ps # 查看容器
$ sudo docker exec -it webdocker /bin/bash # 进入容器
$ ls -la /home/docker/logs # 在宿主主机上查看 log