Docker自定义镜像实现(SpringBoot程序为例)

news2025/4/16 8:10:44

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。
🍎个人主页:Meteors.的博客
💞当前专栏:知识备份
✨特色专栏:知识分享
🥭本文内容:Docker自定义镜像实现(SpringBoot程序为例)
📚 ** ps **  :阅读文章如果有问题或者疑惑,欢迎在评论区提问或指出。


目录

一. 说明

二.  实现步骤

附加


一. 说明

        Docker自定义镜像指的是用户根据自己的需求和规范,使用Dockerfile或其他方式创建的一个Docker镜像。

Dockerfile说明:

        DockerFile是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。常见指令如下:

指令说明示例
FROM指定基础镜像

FROM centos: 6

ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./jre11.tar.gz /tmp
RUN执行Linux的shell命令,一般是安装过程的命令

RUN tar -zxvf /tmp/jre11.tar.gz && EXPORT path=/tmp/jre11:$path

EXPOSE指定容器运行时的监听的端口,给镜像使用者看EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

ps:官网文档

        这个镜像需要包含特定的操作系统、软件、配置文件和其他必要的组件,以满足用户特定的应用或开发环境需求(镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

       自定义Docker镜像的好处:用户可以根据自己的需要定制镜像内容,从而实现快速部署、可扩展性和可移植性。


二.  实现步骤

        以运行一个SpringBoot程序为例,部署步骤如下:

  1. 将Java项目进行打包
  2. 编写Dockerfile文档
    # 配置jdk环境
    FROM openjdk:11.0-jre-buster
    # 设定时区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    # 拷贝jar包到镜像内,并改名为app.jar
    COPY mp-demo-0.0.1-SNAPSHOT.jar /app.jar
    # 入口
    ENTRYPOINT ["java", "-jar", "/app.jar"]
  3. 构建镜像
    docker build -t mp-demo .
  4. 下载jdk环境(文末附下载链接)

  5. 运行镜像
    docker run -d --name mp-demo -p 8080:8080 mp-demo

 最后,通过

docker logs -f mp-demo

 我们可以看到镜像已经运行成功了,并且swagger也可以正常的访问!

附加

1. DokcerJDK11镜像tar包:

        链接: https://pan.baidu.com/s/1tXEmrhSG3bY0Xm4sT5iwhQ?pwd=8700 提取码: 8700 

2. 使用:

docker load -i jdk.tar


 最后,

        希望文章对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1795530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【窗口函数的详细使用】

前言: 💞💞大家好,我是书生♡,今天主要和大家分享一下可MySQL中的窗口函数的概念,语法以及常用的窗口函数,希望对大家有所帮助。感谢大家关注点赞。 💞💞前路漫漫,希望大…

(面试官问我微服务与naocs的使用我回答了如下,面试官让我回去等通知)微服务拆分与nacos的配置使用

微服务架构 正常的小项目就是所有的功能集成在一个模块中,这样代码之间不仅非常耦合,而且修改处理的时候也非常的麻烦,应对高并发时也不好处理,所以 我们可以使用微服务架构,对项目进行模块之间的拆分,每一…

Nacos服务管理

1.前言 在当前的分布式系统和微服务架构中,服务发现和管理变得至关重要。Nacos(NAme COntrol Service)作为一个开源的动态服务发现、配置管理和服务管理平台,为解决这些挑战提供了一站式的解决方案。其提供的负载均衡、分环境管理…

接口自动化框架封装思想建立(全)

httprunner框架(上) 一、什么是Httprunner? 1.httprunner是一个面向http协议的通用测试框架,以前比较流行的是2.X版本。 2.他的思想是只需要维护yaml/json文件就可以实现接口自动化测试,性能测试,线上监…

elementplu父级页面怎么使用封装子组件原组件的方法

一、使用原因: 封装了el-table,表格中有多选,父级要根据指定状态,让其选择不上,需要用到elementplus中table原方法toggleRowSelection 附加小知识点:(el-tree刷新树后之前选中的保持高亮setCurr…

【荒原之梦考研数学】感谢 CSDN 的小伙伴们

自 2016 年在 CSDN 上开设账号至今,荒原之梦网获得了很多同学们的支持和肯定,以及意见或建议,荒原之梦网一路走来,是大家给予了我们不断前进的动力。 当前这个 CSDN 账号,是荒原之梦考研数学网目前在 CSDN 的第一个也…

css 中clip 属性和替代方案 clip-path属性使用

clip clip 属性概述 作用:clip 属性用于定义一个裁剪区域,该区域外的元素内容将不可见。适用元素:clip 属性只对绝对定位(position: absolute)或固定定位(position: fixed)的元素有效&#xf…

JVM学习-Arthas

Arthas Alibaba开源的Java诊断工具,在线排查问题,无需重启,动态跟踪Java代码,实时监控JVM状态Arthas支持JDK6,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能&#…

MogoTemplate基本入门(Mongodb数据库基本增删改查)

nosql 因为没有标准的 sql,各有各的操作方式,所以学习成本比较高。实际应用也不会去命令行直接操作,而是用编程语言的 api。 所以我们可以简单了解一下Mongodb,然后用java的Api去操作就行了 没必要花很大功夫在命令行上操作执行…

创意SQL,高考祝福!一起为学子们加油助威!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

rman恢复后,少部分数据文件状态为MISSING000**

客户有套一体机,每天晚上21点开始做rman完全备份,大约第2天上午9点多完成备份,rman备份保留策略保留一份完全备份 6月1日晚21点自动发起备份,6月2日上午10点15分完成备份,并生成了一个控制文件备份 c-4063271871-2024…

Navicat修改数据库主键

在MySQL数据库,主键ID默认自增(最大的数字自增),但是,在某些情况下,我们想将其从头开始………… 借助Navicat修改数据库主键即可! 1. 找到数据库,点击需要更改的表:点击…

二重,三重积分和曲面,曲线积分的关系和区别

这是我在学习完曲面曲线积分概念后容易和二重三重积分混淆而大概总结和区分了一下,如果有错误请大佬指出,多谢!!!

I2C通信外设

I2C外设介绍 主机,就是拥有主动控制总线的权利。从机,只能在从机允许的情况下,才能控制总线。 多主机模型可分为固定多主机和可变多主机。固定多主机就是总线上,有2个或2个以上固定的主机,上面固定为主机,下…

GIF录屏工具Gif123 v3.3.0单文件

软件介绍 GIF的优势是小、轻、快,适合时间短、画面小、需要嵌入其他页面,打开就自动循环播放的动画。Gif123可录制合成鼠标轨迹,可调整鼠标指针大小,可在设置中打开鼠标指针高亮光圈功能,高亮光圈可跟随鼠标移动以指示鼠标位置。软件极其简单&#xff0…

使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单

明月的服务器一直使用的是 iptables,随着近几年 IPv6 的普及,明月切身体会到还是 IPSET 最方便了,无论你是 IPv4 还是 IPv6 都可以方便的管理,无论你是加入白名单还是黑名单,都非常的简单高效!今天就参照明月自己的实操…

高校运维赛 2024 pyssrf

没有环境,简单过一遍思路吧 考点: pickle反序列化urllib库注入redis缓存 from flask import Flask,request from redis import Redis import hashlib import pickle import base64 import urllib app Flask(__name__) redis Redis(host127.0.0.1, port6379)def get_result(u…

安全测试 之 安全漏洞 CSRF

1. 背景 安全测试是在功能测试的基础上进行的,它验证软件的安全需求,确保产品在遭受恶意攻击时仍能正常运行,并保护用户信息不受侵犯。 2. CSRF 定义 CSRF(Cross-Site Request Forgery),中文名为“跨站请…

halo进阶-主题插件使用

开始捣鼓捣鼓halo,换换主题,加个页面 可参考:Halo 文档 安装/更新主题 主题如同壁纸,萝卜青菜各有所爱,大家按需更换即可; Halo好在一键更换主题,炒鸡方便。 安装/更新插件 此插件还扩展了插件…

神经网络 torch.nn---损失函数与反向传播

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation Loss Function的作用 每次训练神经网络的时候都会有一个目标,也会有一个输出。目标和输出之间的误差,就是用Loss Function来衡量的。所以,…