title: Docker部署Spring Boot应用
date: 2018-5-9 19:27:56
tags: [Docker,Spring Boot]
categories: [Docker]
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 使用Docker我们可以很方便的部署Spring Boot应用。
首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署
Spring Boot 项目
在pom.xml文件中添加web和测试依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
创建一个Controller来验证是否部署成功
@RestController
public class DockerController {
@RequestMapping("/")
public String index() {
return "Docker && Spring Boot";
}
}
Spring Boot 项目添加 Docker 支持
在pom.xml中添加Docker镜像名称及插件
<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</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}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
在src/main/docker 下创建DockerFile文件
#第一行必须指令基于的基础镜像
FROM openjdk:8-jdk-alpine
#创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
VOLUME /tmp
#该命令将复制指定的 到容器中的,并且重命名
ADD spring-boot-docker-1.0.jar app.jar
#配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
构建打包环境
以 Centos 7 为例
安装 Docker 环境
安装
yum install docker
启动
service docker start
镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
输入
docker version
返回版本信息则安装正常
安装MAVEN
-
下载安装文件
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz -
解压安装:
tar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9 /usr/local/maven3
修改环境变量, 在
/etc/profile
最后添加以下几行
MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
执行
source /etc/profile
使环境变量生效。
输入
mvn -version
返回版本信息则安装正常。
使用 Docker 部署 Spring Boot 项目
将项目 拷贝服务器中,进入项目路径下进行打包测试
#打包
mvn package
#启动
java -jar target/spring-boot-docker-1.0.jar
如果打包失败,跳过test打包
mvn package -Dmaven.test.skip=true
看到 Spring Boot 的启动日志后表明环境配置没有问题,接下来我们使用 DockerFile 构建镜像
mvn package docker:build
使用
docker images
命令查看构建好的镜像:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot/spring-boot-docker latest 99ce9468da74 6 seconds ago 117.5 MB
运行该镜像
docker run -p 8080:8080 -t springboot/spring-boot-docker
使用
docker ps
查看正在运行的镜像:
然后访问浏览器。http://192.168.x.x:8080/