SpringBoot 可以直接部署在linux物理环境里面,也可以把springboot工程打包成镜像,以容器的方式来运行。在微服务框架下,springboot工程动辄几十上百,如果一个个都手动部署事毕会耗费很多的精力,linux环境配置也是很麻烦的,并且容易出错。如果我们把springboot打包成镜像,以docker作为工程的运行载体,就可以很容易保证运行环境的一致性。并且可以用Kuberates 来管理镜像,通过kubernates也可以编排镜像,这就为我们一键部署微服务提供了安全高效的方法,所以springboot Docker部署势在必行,本章节我们来学习一下 Springboot的 Docker部署。
这里共分了12个步骤,其实最关键的就4步。
0. 新建springboot-docker web工程
1. 指定端口信息 [可选]
2. 修改pom.xml [关键]
3. 创建restful api
4. 启动测试接口,测试成功
5. 打包jar
6. 移动配置文件到 dockerfile 目录 [可选]
7. 移动jar包 到 dockerfile 目录
8. 目前 打包成镜像的数据源已经配备完毕
9. 编写Dockerfile文件 [关键]
10. 上传到Linux环境[Linux 环境下已经安装 Docker 并且服务已经启动]
11. 打包镜像 [关键]
12. 启动镜像 [关键]
13. 测试接口
0. 新建springboot-docker web工程
组件包含 devtools,web,lombok
1. 指定端口信息 [可选
application.yml
server.port=8081
2. 修改pom.xml [关键]
properties 节点下添加:
<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
plugins 节点下添加:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/resources/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
3. 创建restful api
在main入口类上添加
@RestController
在类内添加restful接口
@GetMapping("/helloWorld")
public String helloworld(){
return "hello world";
}
4. 启动测试接口,测试
localhost:8081/helloWorld
5. 打包jar
maven 执行clear,compile,package,生成 springboot-docker-0.0.1-SNAPSHOT.jar
6. 移动配置文件到 dockerfile 目录 [可选]
dockerfile目录为临时目录,可选,为了集中管理
复制application.yml 到 dockerfile文件目录,
7. 移动jar包 到 dockerfile 目录
dockerfile目录为临时目录,可选,为了集中管理
复制 springboot-docker-0.0.1-SNAPSHOT.jar 文件到dockerfile文件目录,
8. 目前 打包成镜像的数据源已经配备完毕
dockerfile目录下存在 springboot-docker-0.0.1-SNAPSHOT.jar 和 application.yml 文件
9. 编写Dockerfile文件 [关键]
新建 Dockerfile文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
10. 上传到Linux环境[Linux 环境下已经安装 Docker 并且服务已经启动]
(1) 安装docker
(2) 启动Docker服务[前面已有章节单独介绍过docker的安装]
(3) 新建docker目录,把Dockerfile,application.yml 及 springboot-docker-0.0.1-SNAPSHOT.jar app.jar 上传到 Docker目录下
11. 打包镜像 [关键
在Dockerfile当前目录执行
docker build -t springboot-docker .
12. 启动镜像 [关键
docker images #查看新建镜像的 imageid
docker run -p 8081:8081 -t 2eed7e939a0c #启动镜像,需要指定端口好
13. 测试接口
ip:8081/helloWorld #此处ip为宿主机ip地址,输出helloworld 测试成功