docker compose入门7—详解build命令

news2024/10/10 6:16:29

docker-compose build 命令用于根据 Docker Compose 文件中的 build 配置来构建服务的 Docker 镜像。它从指定的 Dockerfile 或构建上下文中构建镜像,这样你可以将定制的镜像用于你的服务。

基本用法

docker-compose build

该命令会查看 docker-compose.yml 文件中所有定义了 build 部分的服务,并为它们构建 Docker 镜像。

详细说明

docker-compose.yml 文件中,如果某个服务需要构建自定义镜像,需要在该服务的定义中包含 build 配置项:

version: '3.8'

services:
  web:
    build:
      context: ./app  # 指定 Dockerfile 的构建上下文
      dockerfile: Dockerfile  # 可选,指定要使用的 Dockerfile(默认为 Dockerfile)
    ports:
      - "8080:80"
  db:
    image: postgres  # 使用现有的镜像而不是构建

在这个示例中,web 服务有一个 build 部分,它告诉 Docker Compose 在 ./app 目录下查找 Dockerfile,并使用该文件构建镜像。db 服务则使用现成的 postgres 镜像,所以不需要构建。

常用选项

  1. 强制重建镜像(--no-cache)

    • 默认情况下,Docker 会使用构建缓存来加快镜像构建速度。使用 --no-cache 选项可以强制不使用缓存。
    • 示例:
      docker-compose build --no-cache
  2. 只构建特定服务

    • 如果你只想构建某个特定的服务,可以在 build 后指定服务名称。
    • 示例:
      docker-compose build web
  3. 强制拉取基础镜像(--pull)

    • 如果你想确保 Docker 在构建过程中使用最新版本的基础镜像(如 FROM 指定的镜像),可以使用 --pull 选项来强制从镜像仓库拉取最新的镜像。
    • 示例:
      docker-compose build --pull
  4. 跳过未更改的服务(--parallel)

    • Docker Compose 3.4+ 版本支持 --parallel 选项,可以并行构建服务。这对于有很多服务的项目可以加速构建过程。
    • 示例:
      docker-compose build --parallel

完整示例

下面是一个带有 build 配置的完整示例,包含多个服务,并使用自定义 Dockerfile 构建:

version: '3.8'

services:
  web:
    build:
      context: ./app
      dockerfile: Dockerfile.web
      args:
        - APP_ENV=production  # 可传递构建参数
    ports:
      - "8080:80"

  api:
    build:
      context: ./api
      dockerfile: Dockerfile.api
    environment:
      - API_KEY=myapikey
    ports:
      - "8081:80"

在这个例子中:

  • web 服务和 api 服务都从各自的 Dockerfile 构建镜像。
  • web 服务的 Dockerfile 文件名是 Dockerfile.web,并且传递了构建时的参数 APP_ENV=production
  • api 服务从 Dockerfile.api 构建,设置了环境变量 API_KEY

总结

  • docker-compose build 用于构建 docker-compose.yml 中定义的服务镜像,主要根据 build 部分的配置进行构建。
  • 常用选项包括 --no-cache(不使用缓存)、--pull(拉取最新镜像)、--parallel(并行构建)等。
  • 可以选择构建所有服务或仅构建指定的服务。

通过灵活使用这些选项,可以高效管理和构建项目中的 Docker 镜像。

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

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

相关文章

嵌入式学习-线性表-Day04-队列

嵌入式学习-线性表-Day04-队列 队列 循环队列(顺序队列) 1)创建一个空的队列 2)入列 3)求长度 链式队列 (1)创建一个空的队列 (2)入列 (3)出列 队列 1 什么是队列? 只允许在两端进行插入和删除操作的线性表…

深度学习——线性神经网络(二、线性回归的从零开始实现)

目录 2.1 生成数据集2.2 读取数据集2.3 初始化模型参数2.4 定义模型2.5 定义损失函数2.6 定义优化算法2.7 训练 2.1 生成数据集 为简单展示,将根据带有噪声的线性模型构造一个数据集。生成一个包含1000个样本的数据集。每个样本包含从标准正态分布中的抽样的两个特征…

RocketMq-秒杀应用场景

1、介绍mq 2、秒杀介绍 -----redis配置 3、生产者-消费者搭建 1、介绍mq 消息存储架构图中主要有下面三个跟消息存储相关的文件构成。 (1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。单个文件大…

微服务实战——登录(普通登录、社交登录、SSO单点登录)

登录 1.1. 用户密码 PostMapping("/login")public String login(UserLoginVo vo, RedirectAttributes redirectAttributes, HttpSession session){R r memberFeignService.login(vo);if(r.getCode() 0){MemberRespVo data r.getData("data", new Type…

价值5000元完整版GOD引擎手机客户端三端引擎源码 编译完整版

5000元完整版GOD引擎手机客户端三端引擎源码 支持三端互通:电脑端,安卓端,苹果端 GOD引擎全套源码及手游客户端源码(苍穹引擎源码及修改教程) 服务端代码为Delphir,手游客户端代码为cocos2dx的(…

DAMA数据管理知识体系(第14章 大数据和数据科学)

课本内容 14.1 引言 概要 从数据中探究、研发预测模型、机器学习模型、规范性模型和分析方法并将研发结果进行部署供相关方分析的人,被称为数据科学家业务驱动 期望抓住从多种流程生成的数据集中发现的商机,是提升一个组织大数据和数据科学能力的最大业务…

论文阅读(十二):Attention is All You Need

文章目录 一、循环神经网络1.1RNN模型1.1.1RNN模型简介1.1.2RNN基本结构1.1.3权重共享机制1.1.4RNN局限性:长期依赖问题与梯度消失 1.2LSTM模型1.2.1LSTM核心思想1.2.2遗忘门1.2.3输入门1.2.4更新细胞状态1.2.5输出门1.2.6参数更新 二、Seq2Seq机制2.1RNN结构的局限…

react 知识点汇总(非常全面)

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。 React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,…

house_of_muney

house_of_muney 首先介绍一下house of muney 这个利用原理: 在了解过_dl_runtime_resolve的前提下,当程序保护开了延迟绑定的时候,程序第一次调用相关函数的时候会执行下面的命令 push n push ModuleID jmp _dl_runtime_resolve 这里的n…

OCR+PDF解析配套前端工具开源详解!

目录 一、项目简介 TextIn为相关领域的前端开发提供了优秀的范本。 目前项目已在Github上开源! 二、性能特色 三、安装使用 安装依赖启动项目脚本命令项目结构 四、效果展示 面对日常生活和工作中常见的OCR识别、PDF解析、翻译、校对等场景,配套的…

洛谷P5648

洛谷P5648 这题花了很长时间,是在线段树题单里找到的( )。有线段树做法,但是我感觉可能比倍增做法更难看懂。以后有空再看看吧。感觉线段树现在只会板子题,绿稍微难点可能就不会。 花了很久时间之后,就觉得…

打造直播美颜平台的关键技术:视频美颜SDK的深度解析

本篇文章,小编将深入解析视频美颜SDK的关键技术,探讨其在打造直播美颜平台中的作用。 一、视频美颜SDK的定义与功能 视频美颜SDK是一套专门为实时视频处理而设计的软件开发工具包。其主要功能包括人脸检测、肤色美化、瑕疵修复、虚化背景、实时滤镜等。…

Python对PDF文件的合并操作

在处理 PDF 文件时,合并多个 PDF 文件为一个单一文件或者将某个单一文件插入某个PDF文件是一个常见的需求。Python 提供了多种库来实现这一功能,其中 PyPDF2 是一个非常流行的选择。该库提供了简单易用的接口,包括 merge() 方法,可…

CRE6281B1 (宽VCC:8-45V PWM电源芯片)

CRE6281B1 是一款外驱功率管的高度集成的电流型PWM 控制 IC,为高性能、低待机功率、低成本、高效率的隔离型反激式开关电源控制器。在满载时,CRE6281B1工作在固定频率(65kHz)模式。在负载较低时,采用节能模式,实现较高的功率转换效…

关于Allegro导出Gerber时的槽孔问题

注意点一: 如果设计的板子中有 槽孔和通孔(俗称圆孔),不仅要NC Drill, 还要 NC Route allegro导出的槽孔文件后缀是 .rou 圆型孔后缀 是 .drl ,出gerber时需要看下是否有该文件。 注意点二: 导出钻孔文件时,设置参…

Hi3061M开发板——系统时钟频率

这里写目录标题 前言MCU时钟介绍PLLCRG_ConfigPLL时钟配置另附完整系统时钟结构图 前言 Hi3061M使用过程中,AD和APT输出,都需要考虑到时钟频率,特别是APT,关系到PWM的输出频率。于是就研究了下相关的时钟。 MCU时钟介绍 MCU共有…

22.1 K8S之KubeSphere实现中间件高可用集群

22.1 K8S之KubeSphere实现中间件高可用集群 一. 章节概述二. WordPress1. WordPress 简介---------------------------------------------------------------------------------------------------一. 章节概述 二. WordPress 1. WordPress 简介 创建并部署 WordPress

MySQL 数据库的性能优化方法方法有哪些?

MySQL 数据库的性能优化方法方法有哪些? 从开发角度来看,一般可以从 SQL 和库表设计两部分优化性能。 SQL 优化 根据慢sql日志,找出需要优化的一些sql语句。 常见优化方向: 避免select *,只查询必要的字段&#x…

62 加密算法

62 加密算法 三种加密算法分类: 对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等非对称加密:密钥成对出现,分别为公钥和私钥,从公钥…

sass学习笔记(1.0)

1.使用变量 sass可以像声明变量那样进行使用,这样同样的样式,就可以使用相同的变量来提高复用。 语法为:$ 变量名 在界面中也可以正常的显示 当然了,变量之间也可以相互引用,比如下面 div{$_color: #d45387;$BgColo…