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 测试成功