一步步教你把SpringBoot项目打包成Docker镜像
作者:天天学爪娃 发布时间:2022-01-10 12:21:02
把SpringBoot项目打包成Docker镜像有两种方案:
全自动化:先打好docker镜像仓库,然后在项目的maven配置中配置好仓库的地址,在项目里配置好Dockerfile文件,这样可以直接在idea中打包好后自动上传到镜像仓库,然后去服务器上启动这个镜像就行了。
半自动化:半自动化又有两种方案,一种是Dockerfile文件放在项目里面,一种是放在项目外面。
放在项目里面:springboot pom.xml中配置maven插件支持,打包时会使用项目里面的dockerfile,如果没配置插件支持会报错找不到dockerfile文件
放在项目外面:springboot还是打包成普通的jar,然后把这个jar上传到服务器,同时在服务器创建一个Dockerfile文件,执行docker build命令,把这个jar构建成一个docker镜像,然后通过镜像执行。
一般来说用半自动化比全自动化用的多,本文用的算是半自动化方式的第二种,总体来说有一下几个步骤:
1. 构建SpringBoot项目
编写一个controller
进行本地测试
2. 打包应用
点击package将项目进行打包
打包成功
cmd运行java -jar能够运行成功
可以下载个Docker插件
3. 编写dockerfile
在target里面创建Dockerfile文件,此时Dockerfile文件是高亮的
Dockerfile配置内容(在Idea里面写Dockerfile会有提示)
#发布到网上时只会把jar包和Dockerfile发布上去
COPY *.jar /app.jar
#地址映射
CMD ["--server.port=8080"]
#对外暴露端口
EXPOSE 8080
#执行命令
ENTRYPOINT ["java","-jar","/app.jar"]
4. 构建镜像
将jar包和Dockerfile文件拿出来新建个文件夹放里面,按住shift键打开PowerShell
(注意:本人电脑上安装的是Docker Desktop)
输入命令构建镜像,firstdocker是镜像名(最后的 . 表示 Dockerfile 文件在当前目录下)
查看构建好的镜像(不清楚命令的可以先学一下基础命令)
镜像构建成功后运行容器(第一个为服务器8080端口,第二个8080为docker容器端口)
可以看容器是否在运行和日志信息
访问成功
5. 发布运行
可以将镜像上传到dockerhub,以后使用Docker之后,给别人交付的就是一个镜像即可!
来源:https://blog.csdn.net/m0_58969296/article/details/128063832
猜你喜欢
- MyBatis简介MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC
- 循环依赖所谓循环依赖就是多个Bean之间依赖关系形成一个闭环,例如A->B->C->...->A 这种情况,当然,最
- 本文实例讲述了Java删除二叉搜索树最大元素和最小元素的方法。分享给大家供大家参考,具体如下:在前面一篇《Java二叉搜索树遍历操作》中完成
- 本文实例讲述了Java简单工厂模式定义与用法。分享给大家供大家参考,具体如下:一 代码// 抽象产品(Abstract Product)角色
- 因为目前所用mybatis-plus版本为3.1.1,感觉是个半成品,所有在实体类上的注解只能支持单表,没有一对一和一对多关系映射,且该功能
- MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效
- 今天本文与大家分享如何得到数组中的最大值和最小值的实例。很适合Java初学者复习数组的基本用法与流程控制语句的使用。具体如下:这个程序主要是
- 1、Java主要特点简单性、跨平台性、分布性、安全性、健壮性、平 * 立与可移植性、多线程、动态性、面向对象的编程语言、支持垃圾自动收集处理等
- 1、maven引入quartz包<!-- https://mvnrepository.com/artifact/org.quartz-
- Equals和GetHashCodeEquals每个实现都必须遵循以下约定:自反性(Reflexive): x.equals(x)必须返回t
- 引言本文是关于Spark优化性能与内存使用的最佳实践,翻译整理自Tuning - Spark 3.3.2 Documentation。由于s
- 前言今天介绍的是关于Spring的数据库连接以及Jdbc模板的相关API方法,虽然在学习了hibernate之后,会知道实现数据库连接一般都
- 这篇文章主要介绍了Java List分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList集合类,让我们
- 通常C#使用基于XML的配置文件,不过如果有需要的话,比如要兼顾较老的系统,可能还是要用到INI文件。但C#本身并不具备读写INI文件的AP
- SpringBoot读取外置logback配置文件springboot项目可以读取外置配置文件,避免了修改配置文件需要重新打包部署的问题。部
- 项目上线之后,如果日志打印的很模糊或者业务逻辑比较复杂,有时候无法定位具体的错误原因,因此可以通过IDEA远程代理进行Debug。线上的代码
- 这篇文章主要介绍了spring boot如何加入mail邮件支持,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 本文实例讲述了Java Swing组件布局管理器之FlowLayout(流式布局)。分享给大家供大家参考,具体如下:FlowLayout应该
- 本文将介绍使用Spring Boot集成Mybatis并实现主从库分离的实现(同样适用于多数据源)。延续之前的Spring Boot 集成M