SpringBoot项目docker镜像生成
1. 本文思路
- 拉取基础镜像
- 基于镜像创建容器
- 在容器中,安装所需依赖
- 部署脚本
- 提交容器,生成新的镜像
- 编写Dockerfile,添加启动命令,生成最终镜像
- 导出镜像
2. 操作步骤
2.1 基础环境
# 拉取镜像
docker pull centos:7.6.1810
# 运行
docker run -itd --name centos:7.6.1810
# 进入容器(开始)
docker exec -it sys /bin/bash
# 安装dos2unix、lsof等
yum update
yum install dos2unix
yum install lsof
# 此处省略其他安装
# 退出容器(结束)
exit
# 提交生成新的镜像,containerId为我们上述生成的容器对应的Id,base_env为新导出的镜像
docker commit containerId base_env:1.0.0
2.2 编写Dockerfile
FROM base_env:1.0.0
WORKDIR /opt/scrapy
COPY conf/ /opt/scrapy/conf/
CMD ["/bin/sh", "-c", "/opt/scrapy/startup.sh start"]
EXPOSE 8081
EXPOSE 9016
参数如下:
| FROM | 依赖镜像 |
| WORKDIR | 当前文件夹 |
| COPY | 拷贝,将文件拷贝到容器中 |
| CMD | 容器启动后执行的初始化命令 |
| EXPOSE | 暴露端口 |
2.3 构建镜像
在Dockerfile文件对应的目录下执行
# 构建
docker build -t tools:1.0.0 .
# 构建成功后,查看
docker images
2.4 启动
docker run -itd --name tools -p 8081:8081 -p 9016:9016 tools:1.0.0
2.5 导出及导入镜像
# 导出镜像
docker save -o tools.tar tools
# 导入镜像
docker load -i tools.tar
3. 踩坑点
3.1 不要后台启动
传统的部署脚本我们启动脚本时候都会使用nohup命令将程序后台执行,但是容器启动初始化将其放后台会导致检测不到程序存在,容器会自动关闭。因此,直接执行即可(例如 java -jar xxx.jar)。
3.2 编译的时候配置文件缺失
使用docker build的时候存在xml配置文件丢失的情况。百度后得知,该情况和启动容器时候使用-v配置挂载路径相关。编译时候如有需要可以使用ADD命令添加。
相关文章:
SpringBoot项目docker镜像生成
1. 本文思路 拉取基础镜像基于镜像创建容器在容器中,安装所需依赖部署脚本提交容器,生成新的镜像编写Dockerfile,添加启动命令,生成最终镜像导出镜像 2. 操作步骤 2.1 基础环境 # 拉取镜像 docker pull centos:7.6.1810 # 运行…...
JDBC初体验(二)——增、删、改、查
本课目标 理解SQL注入的概念 掌握 PreparedStatement 接口的使用 熟练使用JDBC完成数据库的增、删、改、查操作 SQL注入 注入原理:利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行能力,它可以通过在…...
Eva.js是什么(互动小游戏开发)
前言 Eva.js 是一个专注于开发互动游戏项目的前端游戏引擎。 易用:Eva.js 提供开箱即用的游戏组件供开发人员立即使用。是的,它简单而优雅! 高性能:Eva.js 由高效的运行时和渲染管道 (Pixi.JS) 提供支持,这使得释放设…...
监听 beforeunload 事件,阻止页面刷新导致的信息丢失
尤其是一个有编辑器的页面,可以监听 windwo.beforeunload 事件,在用户试图关闭当前标签页的时候提醒用户,内容可能会丢失。 Window:beforeunload 事件 - Web API 接口参考 | MDN...
Java 常见缓存详解以及解决方案
一. 演示Mybatis 一级缓存 首先我们准备一个接口 两个实现的方法, 当我们调用这个queryAll()方法时我们需要调用selectAll()方法来查询数据 调用此接口实现效果 这个时候我们就可以发现了问题,我们调用方法…...
Golang 交叉编译之一文详解
博客原文 文章目录 Golang 中的交叉编译不同操作系统间的编译Linux 下编译windowsmacos windows 下编译Linuxmacos macos 下编译Linuxwindows 不同架构下的编译amd64x86 参考 Golang 中的交叉编译 在 Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或…...
最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书
前提:朋友弄了一个培训机构,培训考试合格后,给发证书,需要一个证书查询系统。委托我给弄一个,花了几个晚上给写的证书查询系统。 实现功能: 前端按照姓名手机号码进行证书查询证书信息展示证书展示&#x…...
windows安装运行Apache James(基于spring的版本)
下载地址 下载列表 https://james.apache.org/download.cgi 直接下载基于spring版本 https://www.apache.org/dyn/closer.lua/james/server/3.8.0/james-server-app-3.8.0-app.zip 设置签名 解压,并切换到james-server-spring-app-3.8.0目录下,在powe…...
Elasticsearch 基本概念:快速入门指南【记录】
简单记录,后续整理补充 介绍: Elasticsearch是一个分布式、可扩展、实时的搜索和分析引擎,建立在开源搜索库Lucene之上。它提供了强大的全文搜索功能和复杂的分析能力,适用于各种场景,包括应用日志分析、电子商务搜索…...
【JVM 基础】类字节码详解
JVM 基础 - 类字节码详解 多语言编译为字节码在JVM运行Java字节码文件Class文件的结构属性从一个例子开始反编译字节码文件字节码文件信息常量池方法表集合类名 再看两个示例分析try-catch-finallykotlin 函数扩展的实现 源代码通过编译器编译为字节码,再通过类加载…...
【算法】基础算法001之双指针
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.数组分块…...
[力扣 Hot100]Day2 字母异位词分组
题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 出处 思路 这题有点考阅读理解,意思就是把输入数组中的所含字母相同但顺序不同的单词放到同…...
记一次 easyswoole 热重载失效复盘 grpc扩展惹的祸
首先看一下运行环境 swoole version 4.8.11 php version 7.4.33 easyswoole version 3.4.6 在easyswoole 的入口文件 如下: <?php namespace EasySwoole\EasySwoole; use App\WebSocket\WebSocketEvents; use Ap…...
存储过程从表中获取数据库名称
---------------业务数据库信息 CREATE TABLE [dbo].[app_erp_datbabase_conf] ( [id] [int] IDENTITY(1,1) NOT NULL, [database_type] [varchar](200) NOT NULL, [database_name] [varchar](200) NOT NULL, [create_time] [datetime] NULL, [modify_t…...
.NET 反射的介绍和简单应用
什么是反射? 反射就是动态发现类型信息的能力。它帮助程序设计人员在程序运行时利用一些信息去动态地使用类型,这些信息在设计时是未知的,这种能力类似于后期绑定。反射还支持的更高级的行为,能在运行时动态创建新类型࿰…...
在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型
在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…...
GO——defer函数
定义 当前函数返回之前执行传入函数的一个关键字 执行时间 当前函数返回前执行 常用于 关闭文件描述符关闭数据库链接解锁资源 原理 参考:https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/ 后调用的 defer 函数会先执行&…...
【UE Niagara学习笔记】06 - 制作火焰喷射过程中飞舞的火星
在上一篇博客(【UE Niagara学习笔记】05 - 喷射火焰顶部的蓝色火焰)的基础上继续实现喷射火焰的火星的效果。 目录 效果 步骤 一、创建材质实例 二、添加新的发射器 2.1 设置粒子材质 2.2 设置发射器持续生成粒子 2.3 设置粒子生成数量 2.4 设…...
机器学习笔记一之入门概念
目录 一 基本分类二 按模型分类概率模型(Probabilistic Models)非概率模型(Non-Probabilistic Models)对比结论线性模型 (Linear Models)非线性模型 (Non-linear Models)对比 三 按算法分类1.批量学习(Batch Learning&…...
用于脚本支持的 CSS 媒体查询
Chrome 120 于近日发布,在这个版本中,我们获得了用于脚本支持的 CSS 媒体查询。简单地说,此媒体查询允许我们测试脚本语言是否可用,并根据支持定制页面内容和样式。我是白特,让我们一起来学习下吧。 媒体查询语法 媒…...
Python原生AOT编译实战指南(2026 LTS版正式启用倒计时)
第一章:Python原生AOT编译的演进脉络与2026 LTS战略意义Python长期以来以解释执行和字节码(.pyc)为核心运行范式,而原生AOT(Ahead-of-Time)编译的探索始于2010年代中期的Nuitka、Cython等工具,但…...
3款高效AI答题工具助力B站硬核会员试炼
3款高效AI答题工具助力B站硬核会员试炼 【免费下载链接】bili-hardcore bilibili 硬核会员 AI 自动答题脚本,直接调用 B 站 API,非 OCR 实现 项目地址: https://gitcode.com/gh_mirrors/bi/bili-hardcore B站硬核会员试炼要求用户在100道专业题目…...
Qt qDebug高级调试技巧:从流式输出到自定义日志格式
1. 流式输出的艺术:让调试信息更优雅 第一次接触Qt的开发者往往会被qDebug的流式输出惊艳到——它比传统的printf风格更符合现代C的编码习惯。我在重构一个老项目时,曾经需要同时输出用户ID、操作类型和时间戳三个变量。用传统方法需要写三行printf&…...
Windows HEIC缩略图插件:系统级集成架构深度解析
Windows HEIC缩略图插件:系统级集成架构深度解析 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 在跨平台数字内容管理日益…...
别再用subprocess了!Mojo原生FFI直连Python C API的5种安全模式,含CPython 3.11+PyPy兼容性矩阵表
第一章:Mojo 与 Python 混合编程案例 生产环境部署Mojo 作为新兴的系统级编程语言,原生兼容 Python 生态,支持在关键性能路径中无缝调用 Mojo 编译模块,同时复用 Python 的成熟工具链与部署基础设施。在生产环境中,典型…...
Windows Cleaner终极攻略:系统优化与空间释放完整指南
Windows Cleaner终极攻略:系统优化与空间释放完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开…...
DOL-CHS-MODS:一站式游戏体验优化整合方案
DOL-CHS-MODS:一站式游戏体验优化整合方案 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 方案价值:为何选择整合方案 DOL-CHS-MODS 提供了一种智能化的游戏资源整合解决方案…...
C++学习笔记——初始化列表、创建和实例化对象、new 关键字、隐式构造与 explicit 关键字、运算符与运算符重载
目录 1. 初始化列表 1.1 基本语法 1.2 为什么使用初始化列表? 1.3 初始化顺序 2. 创建和实例化对象 2.1 栈上分配(自动存储期) 2.2 堆上分配(动态存储期) 2.3 栈 vs 堆:Cherno 的建议 3. new 关键…...
停止学习新语言!2026年技术人的反内耗宣言
一、技术内耗的困局:语言焦虑与效率陷阱2026年的技术圈,Python稳居TIOBE榜首,Rust强势崛起,TypeScript重构前端生态……语言迭代的速度远超人类学习极限。测试从业者深陷三重内耗漩涡:工具链绑架:70%自动化…...
HDRI-Generator: 环境贴图生成AI
在 3D 渲染中,环境光通常比模型本身更难处理。 很多开发者或设计师都有类似经验:即使模型质量很高,如果光照不合理,最终效果仍然会显得不真实。HDRI(High Dynamic Range Image)长期以来是解决这一问题的核…...
