0
点赞
收藏
分享

微信扫一扫

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


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

1. 前言

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

2. 环境

  • Spring Boot 版本2.2.0.RELEASE
  • ​Jdk​​​ 版本​​java 8​​​ 这里可以选择​​openjdk8​​​ 或者​​oracle jdk8​
  • ​Docker​​​ 环境自己可以选择​​Linux​​​,​​Mac​​​或者​​Win10专业版​​ 没有太多区别
  • 开发工具​​Idea 2019​​ 旗舰版

3. Spring Boot 应用

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

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

接下来我们要把spring boot打包成可执行jar

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

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

4. 编写 Docker 脚本

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

# 使用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)不要忘记最后的点 代表当前路径 其他路径 写相对路径

docker build -t docker-springboot:0.0.1 .

然后进入分层构建阶段 走到最后镜像就成了如下

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

6. 启动容器

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

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/hello​

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

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

7. 总结

应用容器化是近年来的热点。而且容器技术层出不穷,掌握应用的容器化技术还是很有必要的。今天我们一步一步从零利用 ​Docker​ 构建了一个 ​​Spring Boot​​ 容器 。希望对你有所帮助。

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

​​个人博客:https://felord.cn​​



举报

相关推荐

0 条评论