Spring Boot 2系列(十七):Docker部署Spring Boot应用
现在的互联网应用系统在需要分布式部署时,会遇到环境配置的问题,在容器技术出来之前,需要在每台服务器系统上配置应用系统的运行环境,容易出错或环境不一致导致各种问题。
容器技术的出现很好的解决了环境配置问题,配置一次应用运行环境,打成镜像,到处部署使用,当然还有其它的用途。
环境准备
安装 Docker
Docker 的安装不在此详述,可参考Docker系列(一):Centos 7下安装Docker,其它操作系统的安装参考 Docker 官方文档:CentOS,Ubuntu,Debian,Fedora
国内可参考:Docker 入门教程,只是有个别命令的使用不是官方推荐的方式。
安装 Maven
Maven 安装参考Maven安装和使用(Linux, Windows)
安装 Git
Git 安装参考Getting Started - Installing Git
部署 jar 包设置
- 有一个包含 jdk1.8 的基础镜像。
- Spring Boot项目添加 docker 插件。 说明: ${docker.image.prefix}:镜像前辍,一般用于标识镜像库名称。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23<artifactId>myapp</artifactId>
<packaging>jar</packaging>
<properties>
<docker.image.prefix>local_repos</docker.image.prefix>
</properties>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.${project.packaging}</include>
</resource>
</resources>
</configuration>
</plugin> - 在项目
src/main
创建docker
目录,在docker目录里创建Dockerfile
文件。 - 编辑 Dockerfile 文件。更多参考Docker系列(四):Dockerfile 配置详解
1 | #指定基础镜像 |
部署 war 包设置##
部署war
包的基础镜像必须包含JDK
和Tomcat
。
- 修改
pom.xml
文件。
1 | <artifactId>myapp</artifactId> |
- 添加 Dockerfile 文件
1 | FROM centos-jdk1.8-tomcat8:1.0 |
打Docker应用镜像
将修改后的项目推到 Git仓库。
在 Linux 使用 Git 命令拉取项目工程代码。
git pull https://xxxxx/xxx/xxx.git
进入到项目工程根目录,执行 Maven 打包,出现BUILD SUCCESS表示成功。
mvn package -DskipTests docker:build
查看镜像,会有显打包成功的镜像。
docker images
创建容器并启动。
docker run -d -p 8080:8080 –name app local_repos/myapp
访问容器:http://xxxxxxx:8080/xxx 。
访问成功表示正常。映射项目日志到外部(-v:共享文件)
docker run -d -p 8080:8080 -v /data/qyd-server/logs:/usr/local/tomcat/bin/logs –name myapp local_repos/myapp
基础镜像里配置了镜像里的工作目录是/work
,在打Spring Boot 应用镜像时,指定了添加应用到根目录(工作目录),项目使用 Log4j2 配置了日志输出到文件,运行容器时添加-v
参来将容器中的应用日志共享到本地主要的目录中。
Spring Boot 2系列(十七):Docker部署Spring Boot应用
http://blog.gxitsky.com/2018/06/20/SpringBoot-17-docker-deploy/