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


猜你喜欢
- 如何实现首先 * 是属于web这块的,那我们需要引入springboot web模块,具体版本在parent中<dependency&
- 一、什么是Websocket?1.WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)2.它实
- 统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形
- 需要记录日志的地方包括:进入方法的时候,传参的时候,统计执行时间,方法返回参数的时候,退出语句块的时候,出现异常的时候,等等。先来体验不使用
- java8分组计算数量和计算总数package com.pig4cloud.pigx.admin.api.vo;import lombok.
- 1、文件分为ASCII文件和二进制文件,ASCII文件也称文本文件,由一系列字符组成,文件中存储的是每个字符的ASCII码值。2、FILE
- 在项目中如果涉及到用Excel开发的报表模版来导出报表数据的话,一般都是在Excel报表中使用VBA做成宏来进行调用。即先使用Excel自带
- 其实就只有一条sql语句<select id = "search" resultType = "mate
- 我们经常会有这种场景,只需要把Spring Boot打成普通的jar包,不包含配置文件,供其他程序应用本文介绍如何使用Maven将Sprin
- 一、File流概念 JAVA中针对文件的读写操作设置了一系列的流,其
- 图片准备hole.png和slider.png为png是因为图片带有透明度。合成目标最终为前端生成两张图片:out_slider.png高度
- 1、返回字符串,Model传输数据/** * 返回String * @param m
- 一、统一全站字符编码通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题package me.gacl
- java 中编写 GUI 有两中工具包,分别为 AWT、Swing。Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和
- 一、概述我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求。而这请求,可能是该节点能
- using System; using System.Drawing; using System.Windows.Forms; using
- 前言随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring
- 准备:(1) IDEA 2021(2)Java 1.8(3)数据库 MySQL 5.7 (SQLyog 或 Navicat)在 MySQL
- 1. 什么是单例模式单例模式指的是在应用整个生命周期内只能存在一个实例。单例模式是一种被广泛使用的设计模式。他有很多好处,能够避免实例对象的
- Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基