Spring Boot 2 实战:结合 Docker 容器化

docker&spring.png

1. 前言

Docker 是啥?好处是啥? 什么如今若是做为一名开发你还不知道甚至没有用过我都感受你落伍了。Docker 是一种虚拟化的容器技术,目的为了打造持续集成、版本控制、可移植性、隔离性和安全性的应用集成。这都是官话。其实我认为最简单的理解就是 Docker 能给你的应用打造一套隔离的应用环境。只要能跑docker的环境,无论是Linux,仍是 Mac,仍是 windows 都能快速把你的应用部署过来甚至达到秒级启动。若是你有个Mysql集群镜像,你瞬间就能启动一个 Mysql 集群,若是让你用手撸一个估计得一袋烟的工夫。看到这里若是没用过 Docker,赶忙找资料学习去,并不难学。
别忘记关注一下,回来接着下面的干货分享。 那么今天我将如何将 Spring Boot 应用容器化。java

2. 环境

  • Spring Boot 版本2.2.0.RELEASE
  • Jdk 版本 java 8 这里能够选择 openjdk8 或者 oracle jdk8
  • Docker 环境本身能够选择 LinuxMac或者Win10专业版 没有太多区别
  • 开发工具 Idea 2019 旗舰版

3. Spring Boot 应用

经过 Idea 搭建一个简单的名称为docker-springboot 的 springboot web maven应用。 并编写一个 Spring MVC 接口。web

gz5v1D.jpg

接下来咱们要把spring boot打包成可执行jarspring

gz53bv.jpg

点击上图的 package 或者熟悉 Maven的用高逼格命令行操做 mvn clean package 编译好后会在 target 目录下找到一个打包好的 jar 文件。sql

4. 编写 Docker 脚本

下来该编写 Docker 建立镜像的打包脚本,名称必须是 Dockerfile,位置为项目根目录,还有经过 Maven 插件来操做位置不尽相同。内容以下docker

# 使用aws 的 openjdk8
  FROM amazoncorretto:8
  # 做者署名   
  MAINTAINER Felordcn
  # 挂载的容器磁盘
  VOLUME ["/tmp"]
  # 使用东八区时间 环境 其余环境参数也能够经过ENV 声明
  ENV TZ=Asia/Shanghai
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  #  add 命令是 将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中
  ADD /target/docker-springboot-0.0.1-SNAPSHOT.jar app.jar
  # 暴露端口 跟springboot 默认应用端口同样
  EXPOSE 8080
  #  启动镜像就执行的命令操做   至关于执行  java -jar  app.jar  -Djava.security.egd=file:/dev/./urandom     最后的指令是为了加快启动
  ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

5. 构建镜像

而后在项目目录下打开命令行工具(idea 自带有)执行脚本(记得启动docker)不要忘记最后的点 表明当前路径 其余路径 写相对路径windows

docker build -t docker-springboot:0.0.1 .

而后进入分层构建阶段 走到最后镜像就成了以下安全

gz5NKi.jpg

6. 启动容器

命令行 执行 docker images 查看一下是否存在 一个 docker-springboot:0.0.1 的镜像,只要结果跟上图同样就必定存在。而后从镜像启动一个容器,命令行以下springboot

docker run --name docker-app -p 8088:8080 docker-springboot:0.0.1

该命令的意思是 我前台从 docker-springboot:0.0.1 镜像启动一个名字叫 docker-app的容器应用,同时将容器内部端口8080映射到宿主机端口8088 ,这样咱们能够经过本地端口8088访问容器端口8080 。而后你访问上面写好的那个接口 http://localhost:8088/docker/hellooracle

gz5bhW.jpg

大功告成。 这样咱们就简单的实现了 Spring Boot 应用的容器化app

7. 总结

应用容器化是近年来的热点。并且容器技术层出不穷,掌握应用的容器化技术仍是颇有必要的。今天咱们一步一步从零利用 Docker 构建了一个 Spring Boot 容器 。但愿对你有所帮助。

关注公众号:Felordcn获取更多资讯

我的博客:https://felord.cn

相关文章
相关标签/搜索