一步步教你把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项目

一步步教你把SpringBoot项目打包成Docker镜像

一步步教你把SpringBoot项目打包成Docker镜像

编写一个controller

一步步教你把SpringBoot项目打包成Docker镜像

进行本地测试

一步步教你把SpringBoot项目打包成Docker镜像

2. 打包应用

点击package将项目进行打包

一步步教你把SpringBoot项目打包成Docker镜像

打包成功

一步步教你把SpringBoot项目打包成Docker镜像

cmd运行java -jar能够运行成功

一步步教你把SpringBoot项目打包成Docker镜像

可以下载个Docker插件

一步步教你把SpringBoot项目打包成Docker镜像

3. 编写dockerfile

在target里面创建Dockerfile文件,此时Dockerfile文件是高亮的

一步步教你把SpringBoot项目打包成Docker镜像

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)

一步步教你把SpringBoot项目打包成Docker镜像

输入命令构建镜像,firstdocker是镜像名(最后的 . 表示 Dockerfile 文件在当前目录下)

一步步教你把SpringBoot项目打包成Docker镜像

查看构建好的镜像(不清楚命令的可以先学一下基础命令)

一步步教你把SpringBoot项目打包成Docker镜像

镜像构建成功后运行容器(第一个为服务器8080端口,第二个8080为docker容器端口)

一步步教你把SpringBoot项目打包成Docker镜像

可以看容器是否在运行和日志信息

一步步教你把SpringBoot项目打包成Docker镜像

访问成功

一步步教你把SpringBoot项目打包成Docker镜像

5. 发布运行

可以将镜像上传到dockerhub,以后使用Docker之后,给别人交付的就是一个镜像即可!

来源:https://blog.csdn.net/m0_58969296/article/details/128063832

标签:springboot,打包,docker镜像
0
投稿

猜你喜欢

  • spring mvc4的日期/数字格式化、枚举转换示例

    2021-11-07 09:49:11
  • SpringMVC通过RESTful结构实现页面数据交互

    2022-01-23 08:57:24
  • Java 基于tcp协议实现文件上传

    2022-04-14 04:01:29
  • C#使用TextBox作数据输入方法

    2023-11-16 22:26:14
  • Springboot实现高吞吐量异步处理详解(适用于高并发场景)

    2023-08-20 23:40:35
  • Java中lambda表达式实现aop切面功能

    2022-12-02 09:44:59
  • 使用C++ Matlab中的lp2lp函数教程详解

    2023-07-13 17:13:12
  • JAVA的反射机制你了解多少

    2023-11-29 16:46:38
  • C#将PDF转为多种图像文件格式的方法(Png/Bmp/Emf/Tiff)

    2022-06-29 16:13:03
  • SpringBoot+MQTT+apollo实现订阅发布功能的示例

    2021-08-30 22:36:46
  • SSM Mapper文件查询出返回数据查不到个别字段的问题

    2023-10-17 01:02:08
  • java解析json数组方式

    2023-08-10 17:22:14
  • IDEA的默认快捷键设置与Eclipse的常用快捷键的设置方法

    2023-04-09 18:32:40
  • Spring Boot 2结合Spring security + JWT实现微信小程序登录

    2022-07-14 08:25:54
  • springboot+springsecurity如何实现动态url细粒度权限认证

    2023-10-01 04:06:39
  • Java SpringBoot拦截器详解

    2021-11-01 15:29:37
  • JAVA NIO实现简单聊天室功能

    2023-05-01 10:32:49
  • 使用Spring特性实现接口多实现类的动态调用方式

    2022-04-11 05:41:42
  • Java调用Oracle存储过程详解

    2022-09-09 03:19:45
  • java实现监听u盘示例分享

    2023-10-20 02:14:05
  • asp之家 软件编程 m.aspxhome.com