linux-Dockerfile及docker-compose.yml相关字段用途
文章目录
- 计算机系统
- 5G云计算
- LINUX Dockerfile及docker-conpose.yml相关字段用途
- 一、Dockerfile
- 1、基础指令
- 2、.高级指令
- 3、多阶段构建指令
- 二、Docker-Compose.yml
- 1、服务定义(services)
- 2、高级服务配置
- 3、网络配置 (networks)
- 4、卷配置 (volumes)
- 5、扩展配置
计算机系统
5G云计算
LINUX Dockerfile及docker-conpose.yml相关字段用途
一、Dockerfile
1、基础指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| FROM | 指定基础镜像 | FROM ubuntu:20.04 | 必须是第一条指令(ARG除外) |
| RUN | 执行命令并创建新的镜像层 | RUN apt-get update | 合并多个操作用&&减少层数 |
| CMD | 指定容器启动时的默认命令 | CMD [“nginx”, “-g”, “daemon off;”] | 只能有一个 CMD,会被 docker run 的参数覆盖 |
| ENTRYPOINT | 指定容器启动时的入口命令 | ENTRYPOINT [“python”, “app.py”] | 与 CMD 配合使用(CMD 作为参数) |
| COPY | 复制文件/目录到镜像中 | COPY ./src /app/src | 目标路径需绝对路径,或相对于 WORKDIR |
| ADD | 类似 COPY,但支持 URL 和解压压缩包 | ADD url路径 /data | 优先使用 COPY,避免意外解压 |
| WORKDIR | 设置工作目录 | WORKDIR /app | 后续指令默认在此目录下执行 |
| ENV | 设置环境变量 | ENV NODE_ENV=production | 变量可在容器运行时使用 |
| ARG | 定义构建时的参数 | ARG VERSION=1.0 | 仅在构建阶段有效,容器运行时不可见 |
| EXPORTS | 声明容器监听的端口 | EXPOSE 80/tcp | 仅文档作用,实际端口映射由 docker run -p 控制 |
2、.高级指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| VOLUME | 定义匿名数据卷 | VOLUME [“/data”] | 数据卷在容器运行时自动创建 |
| USER | 指定运行后续命令的用户 | USER appuser | 需确保用户已存在(先通过 RUN useradd 创建) |
| LABEL | 添加元数据 | LABEL maintainer=“example” | 替代已弃用的 MAINTAINER 指令 |
| ONBUILD | 定义触发器指令(在子镜像构建时触发) | ONBUILD COPY . /app | 常用于基础镜像的继承场景 |
| STOPSIGNAL | 设置容器停止时的信号 | STOPSIGNAL SIGTERM | 默认是 SIGTERM |
| HEALTHCHECK | 定义容器健康检查 | HEALTHCHECK --interval=30s CMD curl -f http://localhost | 检查状态可通过 docker inspect 查看 |
| SHELL | 指定默认 shell | SHELL [“/bin/bash”, “-c”] | 影响后续 RUN、CMD、ENTRYPOINT 的解析方式 |
3、多阶段构建指令
| 指令 | 用途 | 示例 | 注意事项 |
|---|---|---|---|
| FROM … AS <stage> | 定义多阶段构建的命名阶段 | FROM ubuntu:20.04 AS builder | 分阶段构建减少最终镜像体积 |
| COPY --from=<stage> | 从其他阶段复制文件 | COPY --from=builder /app/bin /usr/local/bin | 仅复制所需文件到最终镜像 |
二、Docker-Compose.yml
1、服务定义(services)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| image | 指定服务使用的镜像 | image: redis:7.0 | 优先从仓库拉取镜像 |
| build | 基于 Dockerfile 构建镜像 | build: ./app 或指定上下文和 Dockerfile: build: context: ./app dockerfile: Dockerfile.prod | 与 image 二选一,构建后镜像名为 项目名_服务名 |
| ports | 端口映射(宿主机:容器) | ports: - “8080:80” | 支持范围映射:“3000-3005:3000-3005” |
| volumes | 挂载数据卷或宿主机目录 | volumes: - ./data:/app/data - db-data:/var/lib/mysql | 匿名卷用容器内路径,命名卷需在顶层 volumes 定义 |
| environment | 设置环境变量 | environment: - DB_HOST=db - DEBUG=1 | 或使用键值对格式: environment: { DB_HOST: db } |
| env_file | 从文件加载环境变量 | env_file: .env 或指定多个文件 env_file: [.env, .env.secret] | 文件中的变量会覆盖 environment 字段 |
| network | 指定服务连接的网络 | networks: - frontend - backend | 需在顶层 networks 定义网络 |
| depend_on | 定义服务启动顺序依赖 | depends_on: - db - redis | 不保证服务完全就绪,仅控制启动顺序 |
| command | 覆盖容器默认启动命令 | command: [“python”, “app.py”, “–debug”] | 覆盖 Dockerfile 中的 CMD 或 ENTRYPOINT |
| restart | 容器重启策略 | restart: always 可选值: no、always、on-failure、unless-stopped | 生产环境建议 unless-stopped |
2、高级服务配置
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| healthcheck | 定义容器健康检查 | yaml healthcheck: test: [“CMD”, “curl”, “-f”, “http://localhost”] interval: 30s timeout: 10s retries: 3 | 影响 depends_on 的 condition行为 |
| deploy | 指定 Swarm 模式下的部署配置(普通 Compose 中部分字段可用) | yaml deploy: replicas: 3 resources: limits: cpus: “0.5” memory: 512M | 需使用 docker stack deploy 命令 |
| label | 为服务添加元数据 | labels: - “com.example.description=Web Server” | 用于监控、日志等系统识别 |
| logging | 自定义日志配置 | yaml logging: driver: json-file options: max-size: “10m” max-file: “3” | 控制日志文件大小和数量 |
| config/secrets | 挂载配置文件或密钥(Swarm 模式专用) | yaml configs: - source: app_config target: /app/config.yaml | 需在顶层定义 configs 或 secrets |
3、网络配置 (networks)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| driver | 指定网络驱动类型 | driver: bridge 或 overlay(Swarm 模式) | 默认 bridge,生产环境可选 overlay |
| external | 使用已存在的网络 | external: true | 需先通过 docker network create 创建 |
| ipam | 自定义 IP 地址管理 | yaml ipam: config: - subnet: 172.28.0.0/16 | 用于精细控制子网和 IP 分配 |
4、卷配置 (volumes)
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| driver | 指定卷驱动 | driver: local | 支持第三方驱动(如 nfs、aws) |
| driver_opts | 驱动参数 | yaml driver_opts: type: “nfs” o: “addr=10.0.0.1,nolock,soft” | 根据驱动类型配置参数 |
| external | 使用已存在的卷 | external: true | 需先通过 docker volume create 创建 |
5、扩展配置
| 字段 | 用途 | 示例 | 说明 |
|---|---|---|---|
| extends | 继承其他 Compose 文件的服务配置 | yaml services: web: extends: file: common-services.yml service: base-web | 用于共享通用配置 |
| rvices.yml service: base-web | 用于共享通用配置 | ||
| profiles | 定义服务启用的配置集 | profiles: [“debug”] | 通过 --profile 参数激活: docker-compose --profile debug up |
相关文章:
linux-Dockerfile及docker-compose.yml相关字段用途
文章目录 计算机系统5G云计算LINUX Dockerfile及docker-conpose.yml相关字段用途一、Dockerfile1、基础指令2、.高级指令3、多阶段构建指令 二、Docker-Compose.yml1、服务定义(services)2、高级服务配置3、网络配置 (networks)4、卷配置 (volumes)5、扩…...
deepseek部署:ELK + Filebeat + Zookeeper + Kafka
## 1. 概述 本文档旨在指导如何在7台机器上部署ELK(Elasticsearch, Logstash, Kibana)堆栈、Filebeat、Zookeeper和Kafka。该部署方案适用于日志收集、处理和可视化场景。 ## 2. 环境准备 ### 2.1 机器分配 | 机器编号 | 主机名 | IP地址 | 部署组件 |-…...
微软Office 2016-2024 x86直装版 v16.0.18324 32位
微软 Office 是一款由微软公司开发的办公软件套装,能满足各种办公需求。包含 Word、Excel、PowerPoint、Outlook 和 OneNote 等软件。Word 有强大文档编辑功能和多人协作;Excel 可处理分析大量数据及支持宏编程;PowerPoint 用于制作演示文稿且…...
CMake宏定义管理:如何优雅处理第三方库的宏冲突
在C/C项目开发中,我们常常会遇到这样的困境: 当引入一个功能强大的第三方库时,却发现它定义的某个宏与我们的项目产生冲突。比如: 库定义了 BUFFER_SIZE 1024,而我们需要 BUFFER_SIZE 2048库内部使用 DEBUG 宏控制日志…...
【SpringCloud】Gateway
目录 一、网关路由 1.1.认识网关 1.2.快速入门? 1.2.1.引入依赖 1.2.2.配置路由 二、网关登录校验 2.1.Gateway工作原理 ?2.2.自定义过滤器 2.3.登录校验 2.4.微服务获取用户 2.4.1.保存用户信息到请求头 2.4.2.拦截器获取用户? ?2.5.OpenFeign传递用户 三、…...
Maven入门教程
一、Maven简介 Maven 是一个基于项目对象模型(Project Object Model)的构建工具,用于管理 Java 项目的依赖、构建流程和文档生成。它的核心功能包括: 依赖管理(Dependency Management):自动下载和管理第三方库&#x…...
大数据与金融科技:革新金融行业的动力引擎
大数据与金融科技:革新金融行业的动力引擎 在今天的金融行业,大数据与金融科技的结合正在以惊人的速度推动着金融服务的创新与变革。通过精准的数据分析与智能化决策,金融机构能够更高效地进行风险管理、客户服务、资产管理等一系列关键操作…...
Autosar RTE配置-Port Update配置及使用-基于ETAS工具
文章目录 前言Autosar Rte中enableUpdate参数定义ETAS工具中的配置生成代码分析总结前言 在E2E校验中,需要对Counter进行自增,但每个报文周期不一样,导致自增的周期不一样。且Counter应该在收到报文之后才进行自增。基于这些需求,本文介绍使用RTE Port中的参数enableUpdat…...
【AVRCP】深入理解蓝牙音频 / 视频远程控制规范:从基础到应用
AVRCP(Audio/Video Remote Control Profile)作为蓝牙音频 / 视频控制领域的重要规范,通过其完善的协议架构、丰富的功能分类以及对用户需求的深入考量,为我们带来了便捷、高效的音频 / 视频设备控制体验。无论是在日常生活中的音乐…...
AWS SQS跨账户访问失败排查指南
引言 在使用AWS SQS(Simple Queue Service)时,跨账户访问是常见的业务场景。例如,账户A的应用程序向队列发送消息,账户B的消费者从队列拉取消息。尽管AWS官方文档明确支持此类配置,但在实际应用中,由于权限模型的复杂性,开发者和运维人员常会遇到“策略已配置但无法接…...
算法训练(leetcode)二刷第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列
刷题记录 1143. 最长公共子序列1035. 不相交的线53. 最大子数组和动态规划优化版 392. 判断子序列 1143. 最长公共子序列 leetcode题目地址 本题和300. 最长递增子序列相似(题解)。 使用动态规划: dp数组含义:dp[i][j]表示 以…...
【JavaWeb学习Day20】
Tlias智能学习系统 员工登录 三层架构: Controller:1.接收请求参数(用户名,密码)2.调用Service方法3.响应结果 具体实现: /*** 登录*/ PostMapping("/login") public Result login(Reque…...
2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(二级)真题 + 答案
青少年软件编程(Python)等级考试试卷(二级) ↓↓↓↓↓↓ 模拟 分数:100 题数:37 一、单选题(共25题,共50分) 1. 已知字典如下 dic1 = { name: Ming, age:20, grade: A, Tel:6666666 } 以下哪个代码运行结果为20?( ) A. dic1(age) B. dic1[1] C. dic1(20) D. dic1[ag…...
一、对iic类模块分析与使用
bmp280驱动代码 说明: 1、该模块用于获取气压,温度,海拔等数据。 vcc,gnd接电源 sda ,scl 接iic通信引脚 2、该模块使用iic通信,通过iic发送请求相关类的寄存器值,芯片获取对应寄存器返回的数据…...
ROS 2机器人开发--CMakeLists.txt 文件详解
很多小白宝宝不懂CMakeLists.txt 究竟是干什么的,本文对CMakeLists.txt 文件进行详解 CMakeLists.txt 是 CMake 的核心文件,用户通过这个文件告诉 CMake 如何构建项目。这个文件通常包括设置项目名称、版本号、语言标准、编译器选项、查找依赖包、添加可…...
kan与小波,和不知所云的画图
文章目录 小波应用范围与pde小波的名字 画图图(a):数值解向量 \( u \)图(b):数值解向量 \( v \)结论图4 小波 在你提供的代码中,小波变换(Wavelet Transform)被用于 KANLinear 类中。具体来说,小波变换在 …...
使用DeepSeek实现自动化编程:类的自动生成
目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节,让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中,自动化编程工具如…...
算法题:快速排序
一、快速排序 1、快速排序总结 快速排序是一种高效的排序算法,基于分治法的思想。 分区操作是快速排序的核心,将数组分为两部分。 原地分区可以减少空间复杂度,提高效率。 快速排序的平均时间复杂度为 O(n log n),但在最坏情况…...
Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库
Altair 声明式可视化库:基于 Vega 和 Vega-Lite 的数据可视化解决方案 摘要 在数据科学和分析领域,有效的数据可视化是理解数据、发现模式和传达见解的关键。Python 作为数据科学的主要编程语言之一,提供了多种数据可视化库。其中,Altair 是一个基于 Vega 和 Vega-Lite 的…...
aws(学习笔记第三十课) 练习使用transit gateway
aws(学习笔记第三十课) 使用transit gateway 学习内容: 什么是transit gateway构造两个vpc,并且使用session manager访问private subnet的ec2练习使用transit gateway 1. 什么是transit gateway Transit Gateway的概念 Transit Gateway就是VPC和OnPro…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
Python第七周作业
Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt,并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径,并创建logs目录(若不存在) 3.递归遍历目录data,输出所有.csv文件的路径…...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...
OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...
