前言
本小节先搭建一个最简单的spring boot2.x的web项目,并使用Docker进行部署,这是在开篇文章【在Windows10上安装Docker】基础上,是在spring boot2.x整合各类中间件和框架的开篇之前一个比较重要的学习前提,旨在帮助新手了解Spring boot和Docker,能够初步了解一些Docker的基本命令,了解Dockerfile,也可以帮助大家初步了解一下Spring boot
一.初识spring boot 和 docker
本章环境 Window10 Itellij IDEA 2019.2 docker19
1.搭建spring-boot hello项目,这个大家应该都会,简单地描述一下使用Itellij IDEA搭建的流程
1.1 打开IDEA,选择Create New Project,选择Spring Initilizr,点击Next
1.2 填写project metadata,填写groupId 和 artifactId 点击Next
1.3 勾选依赖,因为我们这个项目是一个Hello world的spring boot项目,只需要让我们入门,并且能够docker部署,所以我们这边只选择spring bootweb的最基本的denpencies,spring boot版本我们也选择当前比较高的版本2.1.8,点击Next
1.4 确认项目名,没有问题后,点击Finish
1.5 进入IDEA,可以看到这个项目的完整项目骨架
1.6 检查pom.xml 依赖 如果没有web依赖,手动加一下,需要注意的是plugins是一定不能或缺的,这是生成可执行jar包的关键
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-maven-plugin
1.7 新建controller HelloController.java
package org.lyn.bazinga.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @GetMapping(value = "/hello") public String hello(){ return "hello spring boot & docker"; }}
1.8 修改后整个项目结构图
1.9 启动SpringBootBazingaApplication的main函数,启动日志如下,浏览器打开localhost:8080/hello 就能访问到hello spring boot & docker,这是很简单的spring boot 的hello world
二.制造Docker镜像
在本系列教程的第一个Docker入门教程中,曾经简单的介绍过Docker的一些基本概念,例如镜像,容器 这2个最基本的概念,先简单地解释一下镜像和容器的概念
解释方法一:如果你曾经安装过操作系统,肯定知道iso文件,有了这个iso文件,你才能安装操作系统,从概念模型上来说,iso就是镜像,用这个iso文件成功安装的操作系统对应的概念就是容器
解释方法二:如果你是一个java开发工程师,java文件编译好的class文件就是镜像,class文件被java类加载器成功加载之后的java实例对象就是容器
总而言之,有了镜像才会有容器,在那个Docker入门教程中,讲了一种获取Docker镜像的方式,就是通过【docker pull imageName:imageVersion】的方式去docker的官方仓库去拉取别人已经制造好的镜像,还有一种就是我们自己编写Dockerfile的方式,然后通过【docker build】命令的方式来生成属于自己的镜像,本小节我们就要我们刚才搭建的最简单的spring boot hello world工程制作一个最简单的镜像
2.1 回到我们刚刚的项目,先进行maven打包,生成可执行的jar,maven打包命令【mvn clean package -Dmaven.test.skip=true】
打包结束结果如下展示,打包成功,我们然后再项目结构中的target目录下多一个spring-boot-bazinga-0.0.1-SNAPSHOT.jar
2.2 编写Dockerfile,什么是Dockerfile,我们可以简单的类比一下,如果docker的镜像是一粒种子,那么Dockerfile相当于这颗种子的DNA,规定了你制作的镜像种子的基本结构,规定了这粒种子以后生根发芽长出来的果实(容器)的形状,废话不多说,在项目下新建Dockerfile,有了这个Dockerfile,我们就像有了一颗种子,我们可以让这粒种子按照我们的规定的DNA生根发芽,长成我们需要的果实
注意,Itellij IDEA可以安装docker的插件,这样可以更好的支持编写正确的Dockerfile,安装Docker插件和安装其他插件一般无二,安装完只需要重启一下IDEA就可以了
2.3 Dockerfile具体内容
FROM openjdk:8MAINTAINER bazinga bazinga@163.comCOPY target/spring-boot-bazinga-0.0.1-SNAPSHOT.jar /spring-boot-bazinga.jarEXPOSE 8080ENTRYPOINT ["java