Dcoker是一个开源的应用容器引擎,介绍我就不介绍了,总之就是很牛批,用过的都相见恨晚
平时我们不是应用都是先搭建相关环境,然后把应用启动一通配置好
本地环境需要搭建一次,测试环境需要搭建一次,生产环境也需要搭建一次,这样重复的工作就做了几次,效率降低
使用了docker了?我们只需要构建一次镜像,然后不同的环境只需要把镜像拉下来启动就行了,是不是很简单?
如果配合CI/DI持续集成,持续部署,那就太爽歪歪了,我们只需要把代码提交到git,剩下打包/编译/测试/部署工作就全自动自己运行了,是不是大大提高了生产力?
废话不多说,今天先研究docker怎么构建SpringBoot,改天再研究CI/DI~
1 安装Docker
首先docker只支持CentOS7以上的系统,如果系统版本过低请升级系统
这里我使用的是CentOS7 x64
docker安装教程详见:Docker的基本操作与使用
2 准备SpringBoot应用
这里我们使用idea来快速构建一个SpringBoot应用
简单编写一个HelloController
@RestController
public class HelloController {
@RequestMapping("/hello")
public Object hello() {
return "hello World!!!";
}
}
右键启动类运行,浏览器输入 http://localhost:8080/hello
可以看到启动成功
3 创建Dockerfile构建文件
我们创建docker文件夹,并在里面创建Dockerfile构建文件
$ mkdir docker
$ cd docker
$ vim Dockerfile
编写Dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: Noisky
# 基础镜像使用openjdk:8
FROM openjdk:8u181-jdk-alpine
# 作者
MAINTAINER Noisky <noisky@ffis.me>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# 运行参数
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
4 制作SpringBoot镜像
将打包好的jar包放入docker文件夹,使docker文件夹只有Dockerfile和需要打包的jar文件
docker安装并启动后,我们来制作SpringBoot镜像
cd 进入docker目录
运行以下命令来制作镜像,注意最后的.
docker build -t springdemo:v1 .
-t 参数是指定此镜像的名称
如图所示开始制作,最后的.
表示当前目录,也就是构建镜像的上下文路径。提示successfully表示构建成功
这时候我们可以使用 docker images
来查看构建的镜像了
5 从新镜像启动容器
docker run -d -p 8188:8180 --name springdemo springdemo:v1
-d 参数是让容器后台运行
-p 是做端口映射,此时将服务器中的8188端口映射到容器中的8080(项目中端口配置的是8080)端口
运行成功
现在的SpringBoot应用是使用docker构建并管理运行的
我们可以使用新端口来访问试试