Spring Boot 2 实战:结合 Docker 容器化
发布日期:2021-05-09 02:26:02 浏览次数:9 分类:博客文章

本文共 2020 字,大约阅读时间需要 6 分钟。

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 环境自己可以选择 LinuxMac或者Win10专业版 没有太多区别
  • 开发工具 Idea 2019 旗舰版

3. Spring Boot 应用

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

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

点击上图的 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 .

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

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 应用的容器化

7. 总结

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

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

转载地址:https://www.cnblogs.com/felordcn/p/12142543.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring Boot 2.2.0.RELEASE 正式发布 带来了大量新特性 支持Java 13
下一篇:Java面试通关要点汇总集之核心篇参考答案

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月16日 07时54分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

利用LDIFDE,CSVDE 批量导出用户! 2019-04-26
ArcServer 无法正常启动,卸载IE7.0! 2019-04-26
为我加油吧-CTO 冲! 2019-04-26
C# 编写9*9乘法表! 2019-04-26
利用Azure媒体服务和WireCast定制个性化直播平台-Part1 2019-04-26
Exchange 2013 的会议室邮箱用户一直无法正常登陆。 2019-04-26
Windows Azure 故障转移模式及高可用个模式探讨! 2019-04-26
脱机地址列表无法生成的奇怪解决办法! 2019-04-26
Azure 配置高可用的准备系列工作-建立不同区域的存储账户和建立网络! 2019-04-26
SharePoint 轻量化应用之结果通知和入职通知&三试通知 2019-04-26
SharePoint 轻量化应用之HR招聘系统之入职通知界面构建 2019-04-26
SharePoint轻量化应用之HR招聘系统之将模板发布到SharePoint表单库及后续测试! 2019-04-26
SharePoint 轻量化工作流之Hr招聘系统之 利用SharePoint Designer 规划工作流程! 2019-04-26
通过IMAP方式迁移U-Mail邮件到Exchange 2013之Umail搭建! 2019-04-26
Exchange 2003 升级到Exchange 2010 整个完整过程介绍! 2019-04-26
获取Exchange 2003 的用户Report,并实现直观的用户邮箱状态! 2019-04-26
证书服务器的安装(在原有组织中么有CA的情况下) 2019-04-26
Exchange 2003 升级到Exchange 2010 之扩展当前森林及域架构! 2019-04-26
Exchange 2003 升级到Exchange 2010 之迁移用户到Exchange 2010! 2019-04-26
Exchange 2003 升级到Exchange 2010 之客户端移动后的变化! 2019-04-26