Dockerfile文件参数配置和使用

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、Dockerfile介绍
  • 二、Dockerfile常用参数
  • 三、配置Dockerfile
  • 四、使用Dockerfile
    • 1. 构建镜像命令语法
    • 2. 举例


K8S自动化部署JAVA项目(Gitlab CI/CD)请参考文章:K8S部署Java项目(Gitlab CI/CD自动化部署)

一、Dockerfile介绍

官网参考文档
https://docs.docker.com/engine/reference/builder/
参数截图
在这里插入图片描述

二、Dockerfile常用参数

Dockerfile文件中的关键字不区分大小写,大写小写都可以
以下为常用参数(关键字)

关键字描述
FROM指定基础镜像 如FROM docker:latest
MAINTAINER指定文件作者 如李白
ENV配置环境变量 如ENV JAVA_HOME=/root/local/java/jdk1.8-.0.121
ARG用于定义变量后面引用 如JAR_FILE=target/*.jar 后面可用${JAR_FILE}方式引用
WORKDIR工作目录,即后续RUN、ADD等命令执行位置的路径
COPY拷贝本地文件到指定目录 如COPY ./tomcat-8.0 /root/tomcat,不支持压缩文件自动解压,文件只会被复制为普通文件
ADD与COPY相似,但除了复制本地文件和目录外,还有几点高级功能,1会在将压缩文件复制到目标目录前自动解压,2还支持使用url作为源路径从网络下载文件并复制到容器中,3在构建上下文中添加的文件可以是一个url,他会自动下载并复制到容器中,tips:建议用COPY,更简单直接
RUN执行linux的shell命令 如RUN mkdir -p /root/project
EXPOSE指定容器运行时坚挺的端口,镜像使用者可看到 如EXPOSE 8800
ENTRYPOINT镜像中应用的启动命令,容器运行时调用 如ENTRYPOINT java -jar app.jar

三、配置Dockerfile

配置举例
以java项目为例使用Dockerfile文件打包并构建镜像

#关键字和值之间可以是空格" "也可以是等号"="
#指定基础镜像,以此镜像为基础构建
FROM openjdk:8-jdk-alpine#作者
MAINTAINER hs#设置环境变量
#JAVA_HOME环境变量定义,即配置jdk安装目录路径,需是jdk文件全路径名
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-4.0.3.al8.x86_64
#MAVEN环境变量定义,即maven安装的位置,需是maven全路径名
ENV MAVEN_HOME=/usr/share/maven
#配置环境变量
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#指定容器的时区
ENV TZ=Asia/Shanghai
#应用参数
#ENV ARGS=""
#target是jar包默认的位置,但是我们在CICD打包阶段已经将jar复制到了/root/jar/k8s-project目录中
#ARG JAR_FILE=target/*.jar#创建工作目录,此目录在CICD打包阶段已经创建
#RUN mkdir -p /root/jar/k8s-project#设置工作目录,后续命令默认执行位置为该路径,不设置的话后续会默认当前路径为工作路径
WORKDIR /root/jar/k8s-project#复制文件到镜像中,将本地文件或目录复制到镜像指定位置
#COPY app.jar /root/jar/k8s-project/app.jar
#COPY ${JAR_FILE} /root/jar/k8s-project/app.jar#将app.jar添加到指定文件夹中,并自动解压缩(与COPY类似,二选一即可)
#同时因为我们已经在.gitlab-ci.yml文件中的打包阶段执行了将jar复制到/root/jar/k8s-project目录的操作,故本文件中省略复制COPY或ADD命令
#ADD target/app.jar /root/jar/k8s-project/app.jar
#ADD ${JAR_FILE} /root/jar/k8s-project/app.jar#时区配置,可省略
#RUN ln -snf /usr/share/zonginfo/$TZ /etc/localtime && echo $TZ > /etc/timezone#容器入口,该命令应该是将每个字符串组合起来,nohub java -jar app.jar
ENTRYPOINT ["nohup","java","-jar","app.jar"]#声明要监听的端口(暴露端口,容器内部的端口,这里暂时不用)
#EXPOSE 8080

四、使用Dockerfile

在docker中可直接构建镜像,操作如下
准备一个项目和一个Dockerfile文件

1. 构建镜像命令语法

打标签,注意最后一个.表示在当前位置执行,如果Dockerfile文件不在当前目录中,需要使用-f指定Dockerfile文件位置

docker build -t 镜像名:镜像标签 .

或指定Dockerfile位置构建

docker build -t 镜像名:镜像标签 . -f /root/Dockerfile

推送镜像

docker push 镜像名:镜像标签

2. 举例

镜像名为springboot
镜像标签为v20240204

docker build -t springboot:v20240204 .
docker push springboot:v20240204

执行后即可生成镜像
后续可通过该镜像部署项目,如docker run命令部署或者k8s的yaml文件部署

当配合gitlab ci/cd的.gitlab-ci.yml文件进行项目自动化部署时,Dockerfile文件最好与.gitlab-ci.yml一样存放在项目根目录
详情可参考:.gitlab-ci.yml文件参数配置和使用


感谢阅读,祝君暴富!

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

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

相关文章

C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现

前言 我们开发的tcp客户端程序在连接服务器以后,经常会遇到服务器已经关闭但是作为客户端的我们不知道,这时候应该应该有一个机制我们可以实时监测客户端和服务器已经断开连接,如果已经断开了连接,我们应该及时报警提示用户客户端和服务器已经断开连接,本文介绍三种可以监…

幸福小院小区中央空调节能改造项目

空调计费是指“中央空调计费”,这种技术实际上是在对水、电、煤气的基础上发展起来的对冷热能量进行计量的一种计费系统技术。 节能改造项目:幸福小院小区. 项目情况需求: 该项目是小区住宅用户建筑,根据功能分区管理…

Vue中路由的使用

目录 1 作用 2 使用方法 2.1 安装路由 2.2 创建路由并导出 2.3 在应用实例中使用vue-router 2.4 声明router-view,展示组件内容 2.5 页面跳转 3 补充内容-子路由 1 作用 能够按不同的访问路径,展示不同组件的内容。 2 使用方法 2.1 安装路由 …

问题:塑瓷后的牙冠要比完成的牙冠大() #学习方法#其他

问题:塑瓷后的牙冠要比完成的牙冠大() A.10% B.10%-15% C.15%-20% D.20%-30% E.50% 参考答案如图所示

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码) 源码设计 clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000;

PiflowX新增Apache Beam引擎支持

参考资料: Apache Beam 架构原理及应用实践-腾讯云开发者社区-腾讯云 (tencent.com) 在之前的文章中有介绍过,PiflowX是支持spark和flink计算引擎,其架构图如下所示: 在piflow高度抽象的流水线组件的支持下,我们可以…

【Leetcode】1696. 跳跃游戏 VI

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i 1, min(n -…

sqli.labs靶场(54-65关)

54、第五十四关 提示尝试是十次后数据库就重置,那我们尝试union 原来是单引号闭合 id-1 union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schemadatabase()) -- 数据库:challenges&#xff0c…

【计算机网络】计算机网络复习资料(期末)

复习要点 一、填空题 1.计算机网络的两个重要基本特点 连通性、共享 2.计算机中的端口号类型 两类端口号 { 服务器端 { 熟知端口号(系统端口号)数值为0~1023 登记端口号,1024~49151 } 客户端使用的端口号:短…

米桃安全漏洞讲堂系列第2期:XSS跨站脚本攻击漏洞

一、一次钓鱼攻击引发的反制 某日,安全团队收到监控预警,有外部人员使用钓鱼邮件对公司内部人员进行信息诈骗。安全团队立即开始分析事件进程。 攻击者以劳动补贴名义群发邮件,诱导内部员工扫描二维码,进而填写个人信息、银行卡等…

WPF控件-ItemsControl

介绍 ItemsControl是用于展示一组项的控件。我们常见的列表&#xff08;ListBox&#xff09;、数据表格&#xff08;DataGrid&#xff09;等都是继承自ItemsControl。可用于自定义样式展示各种批量的数据集合。 常见使用示例&#xff1a; <ItemsControl ItemsSource"…

《MySQL》超详细笔记

目录 基本知识 主流数据库 数据库基本概念 MySQL启动 数据库基本命令 数据库 启动数据库 显示数据库 创建数据库 删除数据库 使用数据库 查询当前数据库信息 显示数据库中的表 导入数据库脚本 表 查看表的结构 查看创建某个表的SQL语句 数据库的查询命令 查询…

PHP客服系统-vue客服聊天系统

PHP-Vue客服聊天系统是一款高效、灵活的客户服务解决方案&#xff0c;基于ThinkPHP6、Vue3和Workerman(Gateworker)框架开发&#xff0c;专为单商户场景打造。 系统亮点&#xff1a; 分布式部署支持&#xff0c;轻松应对高并发场景&#xff1b;本地消息存储功能&#xff0c;确…

探索数据可视化:Matplotlib在Python中的高效应用

探索数据可视化&#xff1a;Matplotlib在Python中的高效应用 引言Matplotlib基础安装和配置Matplotlib基础概念绘制简单图表线形图散点图柱状图 图表定制和美化修改颜色、线型和标记添加标题、图例和标签使用样式表和自定义样式 高级图表类型绘制高级图表多图布局和复杂布局交互…

【MATLAB】交叉验证求光滑因子的广义神经网络回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 交叉验证求光滑因子的广义神经网络回归预测算法是一种用于选择模型超参数并提高泛化性能的方法。下面将对该算法进行详细介绍&#xff1a; 广义神经网络回归模型&#xff1a; 广义神经网络…

Webpack源码浅析

webpack启动方式 webpack有两种启动方式&#xff1a; 通过webpack-cli脚手架来启动&#xff0c;即可以在Terminal终端直接运行&#xff1b; webpack ./debug/index.js --config ./debug/webpack.config.js通过require(webpack)引入包的方式执行&#xff1b;其实第一种方式最终…

zabbix server/agent源码编译成rpm包(通用版-小白教程)

前言 工作环境需要用到很多信创的操作系统&#xff0c;zabbix agent2的官方没有现成的包可用&#xff0c;网上巴拉了一下找到zabbix agent2通用版编译成rpm包的方法 思路&#xff1a;假如当你有一批ky10_x86的机器需要配套的zabbix agent的rpm包&#xff0c;那就找一台ky10_x…

计组学习笔记2024/2/5

记录每天学到了什么,同时在挪移图片过程中再次理解加深印象 学计算机最重要的是理解,而不是整齐的笔记,不要主次搞混,所以以后记笔记的模式也要改一下(主要还是自己太菜,还达不到一边做到整齐笔记的同时还能够有时间做到理解,所以只能舍弃整齐时间保留理解时间)(不过如果有现成…

针对物联网应用优化 Cortex-M0+ 微控制器的功耗消耗”

为了针对物联网应用优化 Cortex-M0 微控制器的功耗消耗&#xff0c;我们可以采取一系列措施&#xff0c;包括优化代码、使用低功耗模式、优化外设配置等。以下是对 Cortex-M0 微控制器功耗消耗优化的详细解释&#xff0c;并提供示例代码以演示如何在物联网应用中优化功耗。 ✅作…