网站首页 > 博客文章 正文
开篇导读
你是否有过这样的经历?
- 启动一个项目,数据库、Redis、Web 服务得一个个敲 docker run?
- 想让别人复现你的开发环境,却得发一堆复杂的启动命令?
- 明明都是容器,为什么不能“一键启动”所有服务?
今天这讲,就来介绍 Docker 世界中多容器协同编排的“黄金搭档”——Docker Compose。
学会之后,你将告别复杂的 docker run 命令,实现一键构建、一键启动、集中管理!
一、什么是 Docker Compose?
Docker Compose 是官方推出的多容器管理工具,通过一个 docker-compose.yml 文件:
- 描述所有服务(如 web、db、redis)
- 设置依赖关系、网络、卷、环境变量等
- 一条命令,自动完成构建和运行
Compose 让你的项目变得:
简洁
可复用
易于维护
二、典型结构:docker-compose.yml 示例
下面是一个经典的 Web 项目结构:
version: '3.8'
services:
web:
image: nginx
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
redis:
image: redis:alpine
ports:
- "6379:6379"
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: testdb
ports:
- "3306:3306"
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
文件解构说明:
字段 | 含义 |
services | 定义每个容器服务,如 web、redis |
image | 容器使用的镜像 |
ports | 宿主机与容器端口映射 |
volumes | 数据挂载 |
environment | 容器内的环境变量(如数据库密码) |
volumes: | 声明命名卷 |
三、核心命令详解
使用 Compose 非常简单,核心只需两步:
1 启动服务
docker-compose up
添加 -d 表示后台运行:
docker-compose up -d
2 停止服务
docker-compose down
这将停止并移除容器、网络、卷。
3 构建服务(使用 Dockerfile 时)
docker-compose build
四、常见场景实战演练
前后端分离项目统一部署
version: '3'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
backend:
build: ./backend
ports:
- "8080:8080"
通过构建不同目录下的 Dockerfile,一键启动完整环境。
集成测试环境(CI/CD)
Compose 特别适合本地搭建与云端 CI 环境的隔离测试系统。只需提供一个 docker-compose.yml,即可在任意机器还原完整服务。
开发场景:文件热更新 + 端口暴露
使用 volumes 将本地代码映射进容器,支持热更新,提升开发效率。
volumes:
- ./src:/app/src
五、Compose VS Kubernetes
虽然 Kubernetes 是容器编排的“王者”,但在下列场景中,Docker Compose 更加合适:
对比项 | Docker Compose | Kubernetes |
学习成本 | 低,易上手 | 高,需要掌握 YAML + API |
配置复杂度 | 简洁,一文件描述 | 多对象、多资源 |
适用场景 | 本地开发,测试环境 | 云原生部署,生产环境 |
是否支持集群 | 单机为主 | 原生支持多节点部署 |
总结一句话:Compose 适合开发,K8s 适合生产。
本讲总结
- Docker Compose 是开发者不可或缺的编排工具;
- 通过 YAML 文件集中定义服务、端口、网络、卷等;
- 一键启动、统一管理,极大提升开发部署效率;
- 是从 Docker 走向 Kubernetes 的重要桥梁!
猜你喜欢
- 2025-05-22 Docker搭建MySQL与Redis集群教程
- 2025-05-22 Docker新手福音!这个开源控制面板让你更快上手Docker
- 2025-05-22 数字管家登场:利用Docker快速部署你的HomeBox家庭库存系统
- 2025-05-22 docker-compose备份数据库,在crontab定时任务中不生效解决方法
- 2025-05-22 容器云生产实践第一步:ELK Stack
- 2025-05-22 docker-compose快速部署elasticsearch-8.x集群+kibana
- 2025-05-22 dify 1.40
- 2025-05-22 Windows 上 Docker 镜像与容器更新全攻略
- 2025-05-22 docker从入门到实战系列6-docker-compose容器编排
- 2025-05-22 Docker与Docker Compose部署微服务对比
你 发表评论:
欢迎- 377℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 373℃用AI Agent治理微服务的复杂性问题|QCon
- 364℃初次使用IntelliJ IDEA新建Maven项目
- 357℃Maven技术方案最全手册(mavena)
- 353℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 353℃IT全明星|IntelliJ IDEA学习笔记(四、idea中怎么创建maven项目)
- 352℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 351℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)