当前位置: 首页 > news >正文

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指定默认 shellSHELL [“/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、服务定义&#xff08;services&#xff09;2、高级服务配置3、网络配置 (networks)4、卷配置 (volumes)5、扩…...

deepseek部署:ELK + Filebeat + Zookeeper + Kafka

## 1. 概述 本文档旨在指导如何在7台机器上部署ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;堆栈、Filebeat、Zookeeper和Kafka。该部署方案适用于日志收集、处理和可视化场景。 ## 2. 环境准备 ### 2.1 机器分配 | 机器编号 | 主机名 | IP地址 | 部署组件 |-…...

微软Office 2016-2024 x86直装版 v16.0.18324 32位

微软 Office 是一款由微软公司开发的办公软件套装&#xff0c;能满足各种办公需求。包含 Word、Excel、PowerPoint、Outlook 和 OneNote 等软件。Word 有强大文档编辑功能和多人协作&#xff1b;Excel 可处理分析大量数据及支持宏编程&#xff1b;PowerPoint 用于制作演示文稿且…...

CMake宏定义管理:如何优雅处理第三方库的宏冲突

在C/C项目开发中&#xff0c;我们常常会遇到这样的困境&#xff1a; 当引入一个功能强大的第三方库时&#xff0c;却发现它定义的某个宏与我们的项目产生冲突。比如&#xff1a; 库定义了 BUFFER_SIZE 1024&#xff0c;而我们需要 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 是一个基于项目对象模型&#xff08;Project Object Model&#xff09;的构建工具&#xff0c;用于管理 Java 项目的依赖、构建流程和文档生成。它的核心功能包括&#xff1a; 依赖管理(Dependency Management)&#xff1a;自动下载和管理第三方库&#x…...

大数据与金融科技:革新金融行业的动力引擎

大数据与金融科技&#xff1a;革新金融行业的动力引擎 在今天的金融行业&#xff0c;大数据与金融科技的结合正在以惊人的速度推动着金融服务的创新与变革。通过精准的数据分析与智能化决策&#xff0c;金融机构能够更高效地进行风险管理、客户服务、资产管理等一系列关键操作…...

Autosar RTE配置-Port Update配置及使用-基于ETAS工具

文章目录 前言Autosar Rte中enableUpdate参数定义ETAS工具中的配置生成代码分析总结前言 在E2E校验中,需要对Counter进行自增,但每个报文周期不一样,导致自增的周期不一样。且Counter应该在收到报文之后才进行自增。基于这些需求,本文介绍使用RTE Port中的参数enableUpdat…...

【AVRCP】深入理解蓝牙音频 / 视频远程控制规范:从基础到应用

AVRCP&#xff08;Audio/Video Remote Control Profile&#xff09;作为蓝牙音频 / 视频控制领域的重要规范&#xff0c;通过其完善的协议架构、丰富的功能分类以及对用户需求的深入考量&#xff0c;为我们带来了便捷、高效的音频 / 视频设备控制体验。无论是在日常生活中的音乐…...

AWS SQS跨账户访问失败排查指南

引言 在使用AWS SQS(Simple Queue Service)时,跨账户访问是常见的业务场景。例如,账户A的应用程序向队列发送消息,账户B的消费者从队列拉取消息。尽管AWS官方文档明确支持此类配置,但在实际应用中,由于权限模型的复杂性,开发者和运维人员常会遇到“策略已配置但无法接…...

算法训练(leetcode)二刷第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列

刷题记录 1143. 最长公共子序列1035. 不相交的线53. 最大子数组和动态规划优化版 392. 判断子序列 1143. 最长公共子序列 leetcode题目地址 本题和300. 最长递增子序列相似&#xff08;题解&#xff09;。 使用动态规划&#xff1a; dp数组含义&#xff1a;dp[i][j]表示 以…...

【JavaWeb学习Day20】

Tlias智能学习系统 员工登录 三层架构&#xff1a; Controller&#xff1a;1.接收请求参数&#xff08;用户名&#xff0c;密码&#xff09;2.调用Service方法3.响应结果 具体实现&#xff1a; /*** 登录*/ ​ 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驱动代码 说明&#xff1a; 1、该模块用于获取气压&#xff0c;温度&#xff0c;海拔等数据。 vcc&#xff0c;gnd接电源 sda &#xff0c;scl 接iic通信引脚 2、该模块使用iic通信&#xff0c;通过iic发送请求相关类的寄存器值&#xff0c;芯片获取对应寄存器返回的数据…...

ROS 2机器人开发--CMakeLists.txt 文件详解

很多小白宝宝不懂CMakeLists.txt 究竟是干什么的&#xff0c;本文对CMakeLists.txt 文件进行详解 CMakeLists.txt 是 CMake 的核心文件&#xff0c;用户通过这个文件告诉 CMake 如何构建项目。这个文件通常包括设置项目名称、版本号、语言标准、编译器选项、查找依赖包、添加可…...

kan与小波,和不知所云的画图

文章目录 小波应用范围与pde小波的名字 画图图(a)&#xff1a;数值解向量 \( u \)图(b)&#xff1a;数值解向量 \( v \)结论图4 小波 在你提供的代码中&#xff0c;小波变换&#xff08;Wavelet Transform&#xff09;被用于 KANLinear 类中。具体来说&#xff0c;小波变换在 …...

使用DeepSeek实现自动化编程:类的自动生成

目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节&#xff0c;让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中&#xff0c;自动化编程工具如…...

算法题:快速排序

一、快速排序 1、快速排序总结 快速排序是一种高效的排序算法&#xff0c;基于分治法的思想。 分区操作是快速排序的核心&#xff0c;将数组分为两部分。 原地分区可以减少空间复杂度&#xff0c;提高效率。 快速排序的平均时间复杂度为 O(n log n)&#xff0c;但在最坏情况…...

Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库

Altair 声明式可视化库:基于 Vega 和 Vega-Lite 的数据可视化解决方案 摘要 在数据科学和分析领域,有效的数据可视化是理解数据、发现模式和传达见解的关键。Python 作为数据科学的主要编程语言之一,提供了多种数据可视化库。其中,Altair 是一个基于 Vega 和 Vega-Lite 的…...

aws(学习笔记第三十课) 练习使用transit gateway

aws(学习笔记第三十课) 使用transit gateway 学习内容&#xff1a; 什么是transit gateway构造两个vpc&#xff0c;并且使用session manager访问private subnet的ec2练习使用transit gateway 1. 什么是transit gateway Transit Gateway的概念 Transit Gateway就是VPC和OnPro…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...