一、Docker Compose 简介

Docker Compose 是 Docker 官方提供的多容器编排工具,通过 YAML 文件(docker-compose.yml)定义应用程序的服务、网络和卷,实现一键式容器管理。其核心优势包括:

  • 简化多容器管理:通过单一文件管理多个关联容器。
  • 开发环境标准化:团队共享相同的环境配置。
  • 快速环境搭建:一条命令启动复杂应用栈。
  • 服务依赖管理:自动处理服务间的依赖关系。
  • 配置即代码:版本控制环境配置。
二、安装 Docker Compose
  1. 前置条件

    • 已安装 Docker Engine(版本需与 Compose 兼容)。
    • Linux 系统建议配置镜像加速器(如阿里云、清华源)。
  2. 安装步骤

    • Linux/macOS
      # 下载最新版二进制文件(替换版本号)
      sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      # 添加执行权限
      sudo chmod +x /usr/local/bin/docker-compose
      # 验证安装
      docker-compose --version
      
    • Windows:通过 Docker Desktop 内置安装(需启用 WSL2 或 Hyper-V)。
三、核心概念与文件结构
  1. docker-compose.yml 文件结构

    version: '3.8'  # 指定 Compose 版本
    services:       # 容器服务定义web:          # 服务名称image: nginx:latest  # 使用官方镜像ports:- "80:80"         # 端口映射(宿主机:容器)volumes:- ./html:/usr/share/nginx/html  # 挂载数据卷depends_on:- db               # 依赖其他服务networks:- custom_network    # 使用自定义网络db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123456  # 环境变量networks:- custom_network
    networks:custom_network:driver: bridge  # 使用 bridge 网络驱动ipam:config:- subnet: 172.16.238.0/24  # 指定子网范围
    
  2. 核心配置字段

    • 服务字段(services):定义容器配置,如镜像、端口、卷等。
    • 网络与存储配置(networks/volumes):管理容器间的网络和数据持久化。
四、环境变量管理
  1. .env 文件

    • 集中管理环境变量,使配置与代码分离。
    • 文件格式为键值对(每行一个变量,不支持多行值):
      # .env 文件示例
      DB_PASSWORD=mysecret
      WEB_PORT=8080
      ENVIRONMENT=dev
      
  2. docker-compose.yml 中引用变量

    • 使用 ${变量名}${变量名:-默认值}(若变量未定义,使用默认值)。
    • 示例:
      version: "3.8"
      services:db:image: mysql:${MYSQL_VERSION:-5.7}environment:MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}web:image: nginxports:- "${WEB_PORT}:80"
      
  3. 多环境配置切换

    • 开发环境.env.dev):
      ENVIRONMENT=dev
      WEB_PORT=8080
      
    • 生产环境.env.prod):
      ENVIRONMENT=prod
      WEB_PORT=80
      
    • 启动时指定环境文件:
      docker-compose --env-file .env.prod up
      
五、常用命令实战
  1. 基础命令

    • 启动所有服务(后台模式):
      docker-compose up -d
      
    • 查看运行状态:
      docker-compose ps
      
    • 停止服务:
      docker-compose stop
      
    • 停止并删除容器:
      docker-compose down
      
    • 重建服务:
      docker-compose up -d --build
      
  2. 调试命令

    • 查看服务日志:
      docker-compose logs -f web
      
    • 执行一次性命令:
      docker-compose run --rm web python manage.py migrate
      
    • 进入运行中容器:
      docker-compose exec db psql -U postgres
      
  3. 扩展操作

    • 水平扩展服务实例:
      docker-compose up -d --scale web=3
      
    • 查看服务资源使用:
      docker-compose top
      
    • 验证配置文件:
      docker-compose config
      
六、进阶技巧与最佳实践
  1. YAML 语法规范

    • 使用空格缩进(禁止 Tab),键值对冒号后加空格。
    • 数字/特殊字符环境变量需用引号包裹(如 "8080:80")。
  2. 性能优化

    • 使用 restart: unless-stopped 实现容器自动重启。
    • 通过 deploy/resource/limits 限制 CPU/内存。
  3. 多环境配置

    • 使用 .env 文件管理环境变量。
    • 分环境编写多个 Compose 文件(如 docker-compose.prod.yml)。
  4. 多机管理部署

    • Docker Swarm:使用 docker swarm 进行多机部署。
    • Kubernetes:结合 Kompose 工具将 Compose 文件转换为 Kubernetes 配置。

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

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

相关文章

Tomcat架构深度解析:从Server到Servlet的全流程揭秘

第一章:Tomcat架构概述1.1 Tomcat的角色与定位:Web服务器 vs Servlet容器Tomcat 是什么?它既是一种轻量级 Web 服务器,也是一种符合 Java EE 规范的 Servlet 容器。Web服务器:类似 Nginx、Apache HTTP Server&#xff…

【Java web】HTTP 协议详解

一、什么是 HTTP?—— 互联网的 "快递员"你有没有想过,当你在浏览器输入www.baidu.com并按下回车时,背后发生了什么?为什么几秒钟后就能看到百度首页?这一切的背后,都离不开一个叫HTTP的 "快…

流式数据服务端怎么传给前端,前端怎么接收?

01 引言 大模型时代,尤其会话模型为了提高用户的使用体验,它不会将所有的数据加载完成一次响应给客户端,而是通过数据流,一点点的将数据慢慢呈现出来。 正是这种有趣的交互方式一次次将SSE(Server Sent Event&#x…

ML307C 4G通信板:工业级DTU固件,多协议支持,智能配置管理

产品概述 ML307C 4G通信板是一款基于中移物联网ML307C模组的工业级DTU(数据传输单元)产品,专为工业物联网应用设计。我们的固件支持多种工业协议,具备远程配置、FOTA升级、数据加密等企业级功能,为您的工业设备提供稳定…

Sublime配置verilog开发环境-具备语法高亮、代码补全、自定义代码段及语法检查等功能,提升FPGA开发效率!

对于在学习FPGA开发之前使用过其他集成开发工具如VS、pycharm、keil或编辑工具如Sublime、VScode、Notepad的朋友,在使用Vivado时可能会像博主一样感觉自带编辑器用起来不太舒服,比如不支持语法高亮显示,不支持代码自动补全等功能。因次&…

18_基于深度学习的烟雾检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

目录 项目介绍🎯 功能展示🌟 一、环境安装🎆 环境配置说明📘 安装指南说明🎥 环境安装教学视频 🌟 二、数据集介绍🌟 三、系统环境(框架/依赖库)说明🧱 系统环…

【计算机网络架构】混合型架构简介

引言在当今数字化浪潮席卷全球的背景下,网络技术正以前所未有的速度迅猛发展,各种网络架构如雨后春笋般涌现。从早期简单的总线型、星型架构,到后来的环型、树型架构,再到如今复杂的网状型、云计算架构等,每一种架构都…

Hexo 双分支部署指南:从原理到 Netlify 实战

Hexo 双分支部署指南:从原理到 Netlify 实战 在 Hexo 博客部署中,很多人会困惑于hexo d自动部署与 GitHub 手动提交的区别,以及如何通过双分支结构优雅地部署到 Netlify。本文将清晰拆解两种部署方式的核心差异,并手把手教你用双分…

【数据结构】深入理解单链表与通讯录项目实现

文章目录一、单链表的概念及结构1.1 什么是单链表?1.2 节点的组成1.3 单链表的特点二、单链表的实现2.1 类型定义2.2 基础工具函数1. 链表打印函数2. 节点创建函数2.3 单链表的核心操作(1)插入操作1. 尾插(SLTPushBack&#xff09…

《Python学习之字典(一):基础操作与核心用法》

坚持用 清晰易懂的图解 代码语言,让每个知识点变得简单! 🚀呆头个人主页详情 🌱 呆头个人Gitee代码仓库 📌 呆头详细专栏系列 座右铭: “不患无位,患所以立。” Python学习之字典(…

[安洵杯 2019]Attack

BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.cn/challenges#[%E5%AE%89%E6%B4%B5%E6%9D%AF%202019]Attack流量分析题,浏览的时候发现攻击者上传信息页面, 直接搜索 flag 就…

复合机器人食品分拣生产线:一体化控制系统引领高效柔性新食代

在食品工业高速发展的今天,面对种类繁多、形态各异的原料分拣需求,以及日益严格的卫生安全与效率要求,传统的固定式分拣设备已难以胜任。复合机器人食品分拣生产线凭借其融合移动(AMR)与操作(机械臂&#x…

二十七、动态SQL

动态SQL介绍动态SQL&#xff1a;if与where标签动态案例-动态更新EmpMapper&#xff08;接口&#xff09;中对应代码块 //动态更新员工public void update2(Emp emp);EmpMapper.xml中对应代码块 <!-- 动态更新员工--><update id"update2">update emp<s…

AI可行性分析:数据×算法×反馈=成功

3.1 从场景到AI可行性分析:需求拆解为“数据+算法+反馈” 核心公式: AI可行性 = 数据可获得性 算法适配性 反馈闭环性 (任一要素为0则需求不可行) 一、传统需求 vs AI需求本质差异 需求文档对比(电商案例) 维度 传统需求文档(购物车功能) AI需求文档(商品推荐系…

【图论】分层图 / 拆点

大多数都是同一个套路&#xff0c;将图拆开成几个图&#xff0c;每一层都对应着一个不同的状态&#xff0c;比如把到点 i 的状态拆成经过了 j 次操作所得的 xx 结果&#xff0c;一般数据不会很大 目前遇到的可分为 3 类&#xff1a; ①.给你最多 k 次操作&#xff0c;求 xx 结…

VS Code配置MinGW64编译MATIO库

VS Code 使用 MinGW64 编译 C 代码并配置 MATIO 库的完整步骤 1. 安装 MSYS2 下载 MSYS2 访问 MSYS2 官网下载安装包&#xff08;选择 x86_64 版本&#xff09;默认安装路径&#xff1a;C:\msys64 更新 MSYS2 包数据库 打开 MSYS2 MinGW 64-bit&#xff08;注意不是 MSYS&…

【前端Vue】使用ElementUI实现表单中可选择可编辑的下拉框

由于项目在vue的开发框架下&#xff0c;因此使用ElementUI组件库进行实现。我希望可选择可编辑的下拉框右侧有跟下拉框一样的箭头&#xff0c;并且在未输入任何内容时&#xff0c;点击该框体会出现选择列表进行填充数据的选择&#xff0c;点击选中数据后列表消失&#xff0c;数…

每日五个pyecharts可视化图表-line:从入门到精通 (4)

欢迎来到pyecharts折线图系列的第四篇文章&#xff01;在前三篇中&#xff0c;我们已经掌握了多种折线图类型&#xff0c;包括基本折线图、平滑折线图、雨量流量关系图、多X轴折线图、堆叠区域图和阶梯图等。在本文中&#xff0c;我们将继续探索五种更高级的折线图类型&#xf…

MySQL中的字符串函数

目录 一、字符串【分割】函数&#xff1a;SUBSTRING_INDEX() SUBSTRING_INDEX函数 练习题 统计每种性别的人数 提取博客URL中的用户名 截取出年龄 SQL83 商品id数据清洗统计 SQL250 查找字符串中逗号出现的次数 二、字符串【截取】函数&#xff1a;SUBSTRING() 基本语…

CodeBuddy IDE深度体验:AI驱动的全栈开发新时代

在人工智能技术迅猛发展的今天&#xff0c;开发者工具正在经历一场深刻的变革。腾讯推出的CodeBuddy IDE作为全球首个“产设研一体”的AI全栈高级工程师工具&#xff0c;重新定义了开发者的日常工作流程。 从需求分析到设计、编码、部署&#xff0c;CodeBuddy通过AI能力将传统…