建木-自动化部署-dockerfile文件书写-自动化部署jar包完成docker运行镜像-dockerfile书写介绍

阿丹:

        在自动化部署的时候jar包要如何进行部署。就需要通过使用书写dockerfile文件来进行触发的时候执行docker指令来完成镜像的部署以及运行。

什么是dockerFile

  1. dockerfile是自定义镜像的一套规则
  2. dockerfie由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层

 dockerfile的书写规则

Dockerfile是用于构建Docker镜像的文本文件。它包含了一系列指令,用于描述如何组织和配置镜像。下面是一些常见的Dockerfile语法和规则:

  1. 每个指令占一行,并以大写字母开头。例如:FROM, RUN, COPY等。

  2. 注释以井号(#)开头。

  3. 指令按照顺序逐行执行,每行的结果都会作为下一行指令的输入。

  4. 可以使用反斜杠()来换行。

  5. 可以使用环境变量(ENV)和构建参数(ARG)来设置在构建过程中使用的值。

  6. 指令可以重复出现,但只有最后一次的结果会被保留。

  7. Dockerfile的第一条指令通常是FROM,指定基础镜像。

  8. 每个指令都会在镜像中创建一个新的中间层(layer),这些中间层可以被重用以提高构建效率。

  9. 使用COPY或ADD指令来将文件从主机复制到镜像中。

  10. 使用RUN指令在镜像中执行命令。

  11. 使用CMD指令设置容器启动时要执行的默认命令。

关于dockerFile一个简单的模版

# 设置基础镜像
FROM <base_image># 设置作者信息
LABEL maintainer="Your Name <your.email@example.com>"# 设置工作目录
WORKDIR /app# 将主机的文件复制到镜像中
COPY . .# 安装所需的依赖
RUN <command_to_install_dependencies># 设置容器启动时要执行的命令
CMD <command_to_run_on_container_startup>

在这个模板中:

  • <base_image>代表你选择的基础镜像,例如ubuntu, node, 或者其他适合你项目的镜像。

  • LABEL指令用于提供有关镜像的元数据,比如作者信息等。

  • WORKDIR指令设置镜像中的工作目录。

  • COPY指令将当前目录中的文件复制到镜像中的工作目录。

  • RUN指令用于在镜像中执行命令,例如安装依赖等。

  • CMD指令设置容器启动时要执行的默认命令。

这样就可以在我们自动化部署的时候进行创建镜像以及启动容器。

注意:在书写dockerfile文件的时候一定要进行jar包运行的测试。

我这里提供一个我项目中书写的dockerfile文件

FROM openjdk:17-ea-slim
LABEL authors="adn"#创建我的工作目录
RUN mkdir "/yunseven"
#暴露端口
EXPOSE 9202
#创建着陆点 登录进入的目录
WORKDIR "/yunseven"
#复制新的目录运行程序
COPY   ./target/yunseven-modules-gen.jar /yunseven/app.jar
#挂载日志目录
VOLUME /yunseven/logs/yunseven-modules-gen
#运行我的jar包
CMD ["java","-jar","/yunseven/app.jar"]

文件解释:

  1. FROM openjdk:17-ea-slim: 使用基于OpenJDK 17 Early Access版本的slim镜像作为基础镜像。
  2. LABEL authors="adn": 添加一个作者标签,值为"adn"。
  3. RUN mkdir "/yunseven": 在容器内创建一个名为"yunseven"的工作目录。
  4. EXPOSE 9202: 暴露容器的9202端口,以便可以从外部访问该端口。
  5. WORKDIR "/yunseven": 设置"/yunseven"目录作为登录容器后的默认工作目录。
  6. COPY ./target/yunseven-modules-gen.jar /yunseven/app.jar: 将宿主机中./target/yunseven-modules-gen.jar文件复制到容器内的/yunseven/app.jar路径。
  7. VOLUME /yunseven/logs/yunseven-modules-gen: 创建一个容器卷,绑定到容器内的/yunseven/logs/yunseven-modules-gen目录,该目录将在容器运行期间用于存储日志。
  8. CMD ["java","-jar","/yunseven/app.jar"]: 在启动容器时运行的默认命令,执行java -jar /yunseven/app.jar来运行Java应用程序。

总结起来,此代码段使用Docker构建了一个基于OpenJDK 17的镜像,并将Java应用程序的JAR文件复制到容器内的工作目录中。然后,在容器启动时,会运行该JAR文件以启动Java应用程序。该容器会将日志存储在容器卷中,可通过绑定到宿主机的目录来访问。

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

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

相关文章

基于 Docker 的深度学习环境:Windows 篇

本篇文章&#xff0c;我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境&#xff0c;以及快速运行 SDXL 1.0 正式版&#xff0c;可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候&#xff0c;写过一篇《基于 Docker 的深度学习环境&#xff…

spring注解驱动开发(一)

Spring常用注解&#xff08;绝对经典&#xff09; 1、需要导入的spring框架的依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.12.RELEASE</version></dependenc…

Spring源码(二)Spring底层架构核心概念解析

1、BeanDefinition BeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如&#xff1a; class&#xff0c;表示Bean类型scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等lazyInit&#xff1a;表示Bean是否是懒加载initM…

Hbase基础概念

HBase 一、HBase的数据模型1.HBase数据存储结构2.HBase存储概念3.HBase基本架构 二、HBase Shell1.DDL(Data Definition Language)1.namespace2.table 2.DML&#xff08;Data Manipulation Language&#xff09;1.写入数据2.读取数据3.删除数据 三、HBase组成架构1. Master架构…

STM32 CubeMX 定时器(普通模式和PWM模式)

STM32 CubeMX STM32 CubeMX 定时器&#xff08;普通模式和PWM模式&#xff09; STM32 CubeMXSTM32 CubeMX 普通模式一、STM32 CubeMX 设置二、代码部分STM32 CubeMX PWM模式一、STM32 CubeMX 设置二、代码部分总结 STM32 CubeMX 普通模式 一、STM32 CubeMX 设置 二、代码部分 …

使用Pytest生成HTML测试报告

背景 最近开发有关业务场景的功能时&#xff0c;涉及的API接口比较多&#xff0c;需要自己模拟多个业务场景的自动化测试&#xff08;暂时不涉及性能测试&#xff09;&#xff0c;并且在每次测试完后能够生成一份测试报告。 考虑到日常使用Python自带的UnitTest&#xff0c;所…

【JVM】详细解析java创建对象的具体流程

目录 一、java创建对象的几种方式 1.1、使用new关键字 1.2、反射创建对象 1.2.1、Class.newInstance创建对象 1.2.2、调用构造器再去创建对象Constructor.newInstance 1.3、clone实现 1.4、反序列化 二、创建对象的过程 2.1、分配空间的方式 1、指针碰撞 2、空闲列表 …

ElementUI 实现动态表单数据校验(已解决)

文章目录 &#x1f34b;前言&#xff1a;&#x1f34d;正文1、探讨需求2、查阅相关文档&#xff08;[element官网](https://element.eleme.cn/#/zh-CN/component/form)&#xff09;官方动态增减表单项示例3、需求完美解决4、注意事项 &#x1f383;专栏分享&#xff1a; &#…

小研究 - 浅析 JVM 中 GC 回收算法与垃圾收集器

本文主要介绍了JVM虚拟机中非常重要的两个部分&#xff0c;GC 回收算法和垃圾收集器。从可回收对象的标记开始&#xff0c;详细介绍 了四个主流的GC算法&#xff0c;详细总结了各自的算法思路及优缺点&#xff0c; 提出了何种情况下应该通常选用哪种算法。 目录 1 标记可回收对…

uniapp项目的pdf文件下载与打开查看

最近写的uniapp项目需要新增一个pdf下载和打开查看功能&#xff0c;摸索了半天终于写了出来&#xff0c;现分享出来供有需要的同行参考&#xff0c;欢迎指正 async function DownloadSignature() {//请求后端接口&#xff0c;返回值为一个url地址let resawait req.flow.flowDo…

【Linux基础】WSL安装Ubuntu

说明 本文使用的Windows环境是Windows 11 专业版。 WSL现在有二代WSL2&#xff0c;后续都通过WSL2来安装Linux&#xff0c;使用的是Ubuntu发行版&#xff0c;版本是20.04。 安装过程使用了PowerShell&#xff0c;且是管理员权限打开的。 参考适用于 Linux 的 Windows 子系统…

多线程面试相关的一些问题

面试题 1. 常见的锁策略相关的面试题 2. CAS相关的面试题 3. Synchronized 原理相关的面试题 4. Callable 接口相关的面试题 1. 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都…

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文&#xff0c;发表于2014年&#xff0c;我们知道&#xff0c;对抗网络是深度学习中&#xff0c;CNN基础上的一大进步&#xff1b; 它最大的好处是&#xff0c;让网络摆脱训练成“死模型”到固定场所处去应用&#xff0c;而是对于变化的场景&#xf…

一条sql查询语句在mysql中的执行过程是什么

mysql的连接器 我们想要在mysql中执行一条sql查询语句&#xff0c;首先需要连接到mysql服务&#xff0c;那么客户端首先要向mysql服务端发起连接请求&#xff0c;我们可以在客户端用mysql -h [ip] -P [port] -u 用户名 -p 密码 命令向服务端发起连接请求&#xff0c;这个连接请…

16位S912ZVML32F3MKH、S912ZVML31F1WKF、S912ZVML31F1MKH混合信号MCU,适用于汽车和工业电机控制应用。

S12 MagniV微控制器是易于使用且高度集成的混合信号MCU&#xff0c;非常适合用于汽车和工业应用。S12 MagniV MCU提供单芯片解决方案&#xff0c;是基于成熟的S12技术的完整系统级封装 (SiP) 解决方案&#xff0c;在整个产品组合内软件和工具都兼容。 S12 MagniV系统级封装 (S…

通过IDEA发送QQ邮箱信息

先创建一个普通的Maven项目&#xff0c;我就不演示啦&#xff0c;个人博客已经写过~[创建一个maven项目]。 项目创建成功后&#xff0c;引人Maven依赖&#xff0c;如下: <dependencies><dependency><groupId>org.apache.commons</groupId><artifact…

在k8s集群内搭建Prometheus监控平台

基本架构 Prometheus由SoundCloud发布&#xff0c;是一套由go语言开发的开源的监控&报警&时间序列数据库的组合。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的…

大数据_Hadoop_Parquet数据格式详解

之前有面试官问到了parquet的数据格式&#xff0c;下面对这种格式做一个详细的解读。 参考链接 &#xff1a; 列存储格式Parquet浅析 - 简书 Parquet 文件结构与优势_parquet文件_KK架构的博客-CSDN博客 Parquet文件格式解析_parquet.block.size_davidfantasy的博客-CSDN博…

Redis学习路线(6)—— Redis的分布式锁

一、分布式锁的模型 &#xff08;一&#xff09;悲观锁&#xff1a; 认为线程安全问题一定会发生&#xff0c;因此在操作数据之前先获取锁&#xff0c;确保线程串行执行。例如Synchronized、Lock都属于悲观锁。 优点&#xff1a; 简单粗暴缺点&#xff1a; 性能略低 &#x…

Qt 4. 发布exe

把ex2.exe放在H盘Ex2文件夹下&#xff0c;执行 H:\Ex2>windeployqt ex2.exe H:\Ex2>windeployqt ex2.exe H:\Ex2\ex2.exe 64 bit, release executable Adding Qt5Svg for qsvgicon.dll Skipping plugin qtvirtualkeyboardplugin.dll due to disabled dependencies (Qt5…