开发者学堂课程干货总结——Spring Boot 2.5.x开发实战(十)

简介: Spring Boot 2.5.x开发实战课时10——Spring Boot2.5实战Docker容器 ,Spring Boot 2.5.x开发实战是学习Java Spring Cloud微服务架构的必经之路。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦

哈喽各位同学们大家好呀,小编今天为大家分享开发者学院中课程Spring Boot2.5实战Docker容器”干货总结哦,并且是Spring Boot 2.5.x开发实战的最后一篇~Spring Boot 2.5.x开发实战可Java中级工程师必备课程!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Spring Boot 2.5.x开发实战

课程地址:https://developer.aliyun.com/learning/course/71

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java

明日将为大家分享新课程“Dubbo 分布式服务治理实践”,敬请期待吧!


Spring Boot2.5实战Docker容器


  1. Spring Boot2.5.x部署方式 

由于Spring Boot内嵌了很多Web容器现在部署Spring Boot应用相对比较简单。这里指的Web应用可以用这个方法部署。如果要部署普通的应用,比如命令方式也可以doctor方式或者用其他的部署工具结合服务器或者远端的云端服务器进行自动化部署。 

image.png 

 

(二)Spring Boot实战Docker容器DockerHub 

image.png 

Docker作为一个容器工具,它实际是一个平台一个生态,它包括Docker的服务器端客户端以及仓库可视化管理界面 

给大家讲课的时候用的是windows10,两年前windows1支持Docker,现在基本上就可以了,因为要开虚拟化技术如果你用Linux环境或者Mac OS,Docker环境是比较容易安装 

image.png 

DockerHub本身是类似于一个镜像的仓库,只不过这个服务器基本上都在美国国内的话像阿里跟Docker签了合作协议,阿里云构建了一个Docker中国大陆的镜像服务,可以创建Docker的私有仓库。阿里云注册账号在自己的账号里面可以看到Docker的一个镜像。Docker应用程序的一个构建和发布标准化大规模集群的部署提供了非常便捷的操作方式 

 

image.png 

Docker本身也有自己的管理工具叫Docker swarm。当有了Docker专属的DockerHub地址之后,再想上传到镜像的时候,可以上传到阿里云的Docker仓库里面 

在上传到阿里云仓库之前要先构建镜像比如MySQL、MongoDBRedis或者Java的一些标准主机镜像以外,也可以构建自己的镜像 

 

(三)阿里云Docker镜像仓库 

1. 国内第一个提供Docker服务的云计算公司2. 2016年云栖大会宣布与Docker官方合作3. 提供Docker Images镜像加速4. 提供景象仓库5. 免费注册使用6. Docker Hub中国站与Docker Hub完全一致 

 

(四)Docker分布式集群架构 

  image.png 

Docker主要是方便开发和运维团队做大规模集群化部署 

 

(五)Docker容器常用命令 

1. 搜索镜像:sudo docker search java2. 拉取镜像:sudo docker pull java3. 运行镜像:docker run4. 获取帮助:docker help5. 构建镜像:docker build6. 提交镜像:docker commit7. 新建镜像:docker create8. 运行镜像:docker run9. 重启镜像:docker restart10.查询全部:docker images11.查看信息:docker info12.推送镜像:docker push 

 

 

DockerFile命令 

Docker构建的早期需要DockerFile,就是Docker构建了一个命令文件Docker基于这个文件构建镜像并且打包镜像。 

1. Docker镜像配置文件2. 脚本编写3. 脚本文件4. 一系列命令和参数构成的脚本,5. 这些命令应用于基础镜像6. 并最终创建一个新的镜像 

 

DockerFile重要指令 

1. FROM 指定基础镜像文件  

2. MAINTAINER authors_name 作者  

3. RUN 运行特殊命令,比如下载JDK  

4. SER命令用于设置运行容器的UID  

5. VOLUME 指定容器访问目录  

6. WORKDIR 运行目录  

7. ENV 环境变量,如ENV LANG en_US.UTF-8  

8. CMD 容器执行的命令 CMD "echo" "Hello docker!"  

9. ADD 复制文件到目标文件夹  

10.COPY 复制,类似ADD  

11.EXPOSE 暴露端口  

12.ENTRYPOINT 入口,命令,只有一个不能被Run覆盖 

 

(六)Spring Boot 2.5 Docker制作镜像 

环境需求  

•docker (1.6.0 or above) 

jdk 1.8  

•Maven 3.0+或者Gradle 2.3+ 

 

Spring Boot 2.4全新docker构建工具 

•Spring Boot 2.4 推出了自己的 docker 构建工具 

•一键构建Docker镜像,无需Dockerfile 

•之前工具spotify 、fabric8,配置插件使用,需要Dockerfile 

• jib-maven-plugin是Google18 年 7 月发布的Java 镜像工具(支持 

Maven 和 Gradle),也无需Dockerfile 

•整合在原有的 spring-boot-maven-plugin 中, 

•只需要配置对应目标仓库和主机信息即可完成镜像构建。 

•新命令:mvn spring-boot:build-image 

 

(七)演示 

Dockerfile制作镜像 

FROM java:8  

•VOLUME /tmp  

•ADD java-spring-boot-docker-0.1.0.jar app.jar  

•RUN bash -c 'touch /app.jar'  

•ENTRYPOINT ["java","Djava.security.egd=file:/dev/./urandom","jar","/app.jar"] 

 

Build Docker Image with Maven 

<plugin>  

• <groupId>com.spotify</groupId>  

• <artifactId>docker-maven-plugin</artifactId>  

• <version>0.2.3</version>  

• <configuration>  

• <imageName>${docker.image.prefix}/${project.artifactId}</imageName>  

• <dockerDirectory>src/main/docker</dockerDirectory>  

• <resources> • <resource> • <targetPath>/</targetPath> 

• <directory>${project.build.directory}</directory>  

• <include>${project.build.finalName}.jar</include>  

• </resource>  

• </resources>  

• </configuration>  

• </plugin> 

 

 

Maven打包 

image.png 

image.png 

 

(八高级面试题 

1. Docker是什么?解决什么问题?  

2. Docker的优势?  

3. Swarm工具和Docker的关系  

4. K8s优势是什么?  

5. 如何安装Docker容器?  

6. 如何制作、推送Docker镜像?  

7. 如何搜索、拉取、启动Docker镜像?  

8. Docker如何容器部署Spring Boot 2.5.x和微服务 

 

相关文章
|
26天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
199 17
Spring Boot 两种部署到服务器的方式
|
4月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
85 0
|
4月前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
136 1
Spring 框架:Java 开发者的春天
|
3月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
79 2
|
4月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
138 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
4月前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
4月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
117 2
|
6月前
|
Java API 开发者
【开发者福音】Spring Boot 异常处理:优雅应对错误,提升应用健壮性,让调试不再是噩梦!
【8月更文挑战第29天】本文通过对比传统错误处理方式与Spring Boot推荐的最佳实践,展示了如何在Spring Boot应用中实现统一且优雅的异常处理。传统方法需在每个可能出错的地方显式处理异常,导致代码冗余且不一致。而Spring Boot的全局异常处理机制则能集中处理所有异常,简化代码并确保错误响应格式统一,提高应用程序的健壮性和可维护性。文中提供了具体的示例代码以帮助读者更好地理解和应用这一机制。
176 0
|
6月前
|
监控 安全 Java
【开发者必备】Spring Boot中自定义注解与处理器的神奇魔力:一键解锁代码新高度!
【8月更文挑战第29天】本文介绍如何在Spring Boot中利用自定义注解与处理器增强应用功能。通过定义如`@CustomProcessor`注解并结合`BeanPostProcessor`实现特定逻辑处理,如业务逻辑封装、配置管理及元数据分析等,从而提升代码整洁度与可维护性。文章详细展示了从注解定义、处理器编写到实际应用的具体步骤,并提供了实战案例,帮助开发者更好地理解和运用这一强大特性,以实现代码的高效组织与优化。
308 0
|
6月前
|
安全 Java 开发者
开发者必看!@Resource与private final的较量,Spring Boot注入技巧大揭秘,你不可不知的细节!
【8月更文挑战第29天】Spring Boot作为热门Java框架,其依赖注入机制备受关注。本文通过对比@Resource(JSR-250规范)和@Autowired(Spring特有),并结合private final声明的字段注入,详细探讨了两者的区别与应用场景。通过示例代码展示了@Resource按名称注入及@Autowired按类型注入的特点,并分析了它们在注入时机、依赖性、线程安全性和单一职责原则方面的差异,帮助开发者根据具体需求选择最合适的注入策略。
238 0