Docker部署Spring Boot应用
|Word count:946|Reading time:4min|Post View:
Docker部署Spring Boot应用
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 使用Docker我们可以很方便的部署Spring Boot应用。
首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署
Spring Boot 项目
在pom.xml文件中添加web和测试依赖
1 2 3 4 5 6 7 8 9 10 11
| <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来验证是否部署成功
1 2 3 4 5 6 7 8
| @RestController public class DockerController { @RequestMapping("/") public String index() { return "Docker && Spring Boot"; } }
|
Spring Boot 项目添加 Docker 支持
在pom.xml中添加Docker镜像名称及插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </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> </plugins> </build>
|
在src/main/docker 下创建DockerFile文件
1 2 3 4 5 6 7 8
| #第一行必须指令基于的基础镜像 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 环境
1 2 3 4 5 6 7 8 9 10 11
| 安装 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.gz
mv apache-maven-3.3.9 /usr/local/maven3
修改环境变量, 在/etc/profile
最后添加以下几行
1 2 3
| MAVEN_HOME=/usr/local/maven3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin
|
执行source /etc/profile
使环境变量生效。
输入mvn -version
返回版本信息则安装正常。
使用 Docker 部署 Spring Boot 项目
将项目 拷贝服务器中,进入项目路径下进行打包测试
1 2 3 4
| #打包 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
命令查看构建好的镜像:
1 2 3
| docker images REPOSITORY TAG IMAGE ID CREATED SIZE springboot/spring-boot-docker latest 99ce9468da74 6 seconds ago 117.5 MB
|
运行该镜像
1
| docker run -p 8080:8080 -t springboot/spring-boot-docker
|
使用docker ps
查看正在运行的镜像:
然后访问浏览器。http://192.168.x.x:8080/
部署完成