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

Docker‑Compose

Docker‑Compose

Docker‑Compose 学习笔记

一、Docker‑Compose 是什么

Compose 是Docker官方推出的多容器编排部署工具,用来管理由多个Docker容器组成的整套业务应用。

  1. 编写docker‑compose.ymlYAML配置文件,定义容器之间依赖、调用关系、网络、数据卷;
  2. 一条命令即可一次性启动、关闭整套业务所有容器。

为什么需要Docker‑Compose

Docker最佳实践:一个容器只运行单个服务
一套微服务项目通常需要 MySQL、Redis、后端业务服务、Nacos等多个容器;
如果手动逐条执行docker run创建容器,需要管控启动顺序、容器IP、容器网络,部署和维护十分麻烦。

Compose允许通过单个docker‑compose.yml,定义一组关联容器作为一个业务工程,一键部署所有服务依赖,解决容器编排、启停顺序、网络互通难题。


二、Docker‑Compose 核心概念

配置载体:docker‑compose.yml
两大核心要素

  1. service(服务):单个应用容器实例,例如 mysql容器、redis容器、his‑c6‑basedata业务微服务容器;
  2. project(工程):一组彼此关联的业务容器,完整业务单元,由yml配置文件定义。

三、Docker‑Compose 使用三大步骤

  1. 编写Dockerfile,打包各个微服务,生成业务镜像;
  2. 编写docker‑compose.yml配置文件,编排所有容器服务、依赖关系、启动顺序;
  3. 执行启动命令,一键拉起整套应用。
# 前台启动
docker‑compose up
# 后台守护进程启动(生产常用)
docker‑compose up -d

四、手动部署多容器的痛点(不使用Compose)

手动部署流程

  1. 单独启动MySQL容器
  2. 单独启动Redis容器
  3. 启动后端微服务容器

现存缺陷

  1. 启动顺序硬性约束:必须先启动MySQL、Redis之后,业务微服务才可正常连接;
  2. 需要记忆多条冗长的docker run命令;
  3. 容器重启之后IP地址会发生变化,硬编码IP容易出现连接失败;
  4. 容器之间网络互通配置繁琐。

解决方案:使用Docker‑Compose统一编排管理

Compose完整部署流程

  1. 编写docker‑compose.yml编排配置;
  2. 修改微服务数据库、中间件连接地址,改用服务名访问(不需要硬编码容器IP);
  3. 后台启动整套容器 docker‑compose up -d
  4. 进入MySQL容器,初始化业务数据库、数据表;
  5. Swagger接口地址测试:http://服务器IP:服务端口/swagger‑ui.html#/

五、docker‑compose.yml 配置示例(MySQL模板)

version: "3"
services:mysql:image: mysql:8.4environment:MYSQL_ROOT_PASSWORD: '123456'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'db2021'MYSQL_USER: 'zzyy'MYSQL_PASSWORD: 'zzyy123'ports:- "3306:3306"volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker‑entrypoint‑initdb.dnetworks:- atguigu_netcommand: --default‑authentication‑plugin=mysql_native_passwordnetworks:atguigu_net:

配置说明

  • environment:设置MySQL环境变量、账号密码、初始化数据库;
  • ports:宿主机端口‑容器端口映射;
  • volumes:数据卷挂载,实现配置、持久化数据、初始化脚本宿主机和容器同步;
  • networks:自定义桥接网络,Compose内部容器依靠服务名互相访问;
  • command:指定mysql8.0认证插件,解决外部程序无法连接MySQL问题。

六、Docker‑Compose 全套常用命令

# 查看帮助文档
docker‑compose -h# 前台启动所有编排服务
docker‑compose up# 后台守护模式启动服务
docker‑compose up -d# 停止服务,并且删除容器、自定义网络、数据卷
docker‑compose down# 进入指定服务id对应的容器内部
docker‑compose exec 服务id /bin/bash# 查看当前编排正在运行的容器列表
docker‑compose ps# 查看容器内部运行进程
docker‑compose top# 查看指定服务容器运行日志
docker‑compose logs 服务id# 校验yml配置文件语法
docker‑compose config# 静默校验配置,仅出错时输出日志
docker‑compose config -q# 重启全部服务
docker‑compose restart# 启动已经停止的容器
docker‑compose start# 停止容器,但不会删除容器
docker‑compose stop

七、实操总结

  1. 小型微服务项目(MySQL、Redis、Oatpp‑C++后端)优先使用docker‑compose一键编排;
  2. 容器之间禁止硬编码IP地址,直接填写yml内的service服务名称进行访问;
  3. 数据卷挂载实现MySQL数据持久化,容器销毁数据不会丢失;
  4. 日常运维启停优先使用up -d后台启动、stop停止容器。
http://www.jsqmd.com/news/1353440/

相关文章:

  • 2026北京房屋漏水维修哪家靠谱 亲测三家正规公司避坑指南 - 吉林同城获客
  • Obsidian日历插件:3个简单步骤打造可视化笔记时间管理系统
  • JavaScript开发工具链与性能优化实战指南
  • Chrome扩展MV3开发:Service Worker与chrome.runtime实战指南
  • 项目管理铁三角:范围、时间、成本的动态平衡艺术
  • Git+Markdown+结构化数据:构建AI项目记忆体,告别重复上下文
  • 2026每一种情绪都值得被好好安放,情绪树洞安全隐私不踩坑,你的喜怒哀乐听过就放手从不留下 - 时时资讯
  • 广东高考复读学籍如何处理 - 滚动商讯
  • 从Code Llama到Muse Code:AI编程助手的技术架构与本地部署实践
  • 2026苏州全屋定制**推荐,6大品牌适配不同需求 - 十大品牌排行榜
  • 2026实用盘点:pdf转文档用什么软件,办公老手亲测这七款就够了
  • Steam挂刀行情站:24小时自动追踪四大平台饰品价格的终极指南
  • 迈普交换机基本操作手册
  • 2026年Markdown一键排版工具合集:5款公众号编辑软件实测指南 - 一串葡萄
  • 道德经道影书斋注释版 073|勇于敢则杀
  • JSON翻译神器:3分钟告别多语言开发烦恼的完整指南
  • PCF8563 RTC芯片深度解析:从I2C驱动到硬件设计的嵌入式实战指南
  • 2026德阳高性价比装修公司梳理与装修避坑指南 - 装修新知
  • 2026年8月石家庄雷神电脑笔记本设备维修服务指南|911/Zero全系屏幕、电池、主板原厂规格检修 - 苹果手机品牌电脑维修
  • 2026兰州房屋漏水维修哪家靠谱 亲测三家正规公司避坑指南 - 吉林同城获客
  • QGIS创建正方形网格:从坐标系选择到自动化脚本全解析
  • 电子元器件采购技术选型指南:FAE工程师怎么看替代料验证 - 滚动商讯
  • JeecgBoot AI低代码平台终极指南:一句话生成完整企业系统
  • MCP协议实战:构建AI万能接口,告别LLM应用集成重复造轮子
  • 基于NE555的自锁开关电路:智能车硬件电源管理方案
  • 2026天津房屋漏水维修哪家靠谱 亲测三家正规公司避坑指南 - 吉林同城获客
  • CharacterSheet核心功能解析:FLUX.2与Krea 2模型对比评测
  • Twitter数据挖掘实战:Mining-the-Social-Web教你用Python抓取并分析推文
  • 2026保姆级教程:免费视频拼接+统一分辨率工具全攻略 - 今日咨询
  • 如何利用IDM与第三方工具实现网盘高速下载?2026最新网盘提速方案