网站首页 > 教程文章 正文
当项目变得越来越复杂,一个服务已经无法满足需求时,你可能需要同时部署数据库、后端服务、前端网页、缓存组件……这时,如果还一个一个手动 docker run,简直是灾难
这就是 Docker Compose 登场的时机!
一、什么是 Docker Compose?为什么需要它?
Docker Compose 是 Docker 官方推出的容器编排工具,用于定义和运行多容器应用。
通过一个 docker-compose.yml 文件,就可以用一条命令 docker-compose up,一次性拉起整个项目中的多个服务,像启动引擎一样简单
使用 Compose 的优势:
- 一键启动/停止多个容器
- 配置集中管理,结构清晰
- 支持服务依赖顺序(如 DB 先启动)
- 本地开发、测试环境更轻松
- 更适合多人协作部署场景
二、docker-compose.yml文件结构说明
下面是一个典型的 Compose 配置文件结构:
version: "3.9"
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
关键结构说明:
字段 | 含义说明 |
version | Compose 文件版本 |
services | 定义多个容器服务 |
image | 使用的镜像名 |
build | 可选,使用 Dockerfile 构建镜像 |
ports | 主机端口:容器端口映射 |
volumes | 数据卷挂载 |
environment | 环境变量设置 |
depends_on | 指定依赖的服务,控制启动顺序 |
三、常见服务组合案例
LAMP(Linux + Apache + MySQL + PHP)
services:
apache:
image: php:7.4-apache
ports:
- "8080:80"
volumes:
- ./code:/var/www/html
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MEVN(MongoDB + Express + Vue + Node)
适用于现代前后端分离开发架构:
services:
frontend:
build: ./frontend
ports:
- "3000:80"
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- mongo
mongo:
image: mongo
Compose 可以灵活支持不同编程语言与框架组合,让你更轻松实现项目整体容器化!
四、实战:一键部署多容器 WordPress + MySQL
我们将部署一个最常见的实际案例:WordPress + MySQL 组合。
创建项目结构:
wordpress-docker/
├── docker-compose.yml
编辑docker-compose.yml:
version: "3.9"
services:
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: 123456
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
启动项目:
docker-compose up -d
打开浏览器访问 http://localhost:8080,你将看到熟悉的 WordPress 安装界面!
常用 Compose 命令汇总
命令 | 作用说明 |
docker-compose up -d | 后台启动所有服务 |
docker-compose down | 停止并删除容器和网络 |
docker-compose ps | 查看当前服务状态 |
docker-compose logs | 查看服务日志 |
docker-compose exec | 进入容器执行命令 |
docker-compose restart | 重启所有服务 |
总结一下
知识点 | 内容说明 |
Compose 是啥? | 多容器编排工具,用于简化部署和管理 |
文件结构清晰 | 所有配置集中在一个 yaml 文件 |
一键部署 | up 和 down 就能快速搭建/清理环境 |
支持服务组合 | 如 LAMP、MEVN、WordPress 等多容器应用 |
- 上一篇: Docker 命令入门实战:搞懂这些才算真正入门!
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-08-05 Docker 命令入门实战:搞懂这些才算真正入门!
- 2025-08-05 Docker 镜像构建加速与镜像瘦身实战,一篇就够!
- 2025-08-05 Docker 常用命令手册
- 2025-08-05 Docker命令大全详解(39个常用命令)
- 2025-08-05 Docker镜像越来越大?我用这 3 个技巧直接瘦身 80%!附实战优化对比
- 2025-08-05 Docker容器与镜像详解(6大核心区别)
- 2025-08-05 docker镜像操作
- 2025-08-05 Docker 一键清盘术,释放磁盘空间不求人
- 08-05 Docker Compose 编排实战:一键部署多容器应用!
- 08-05 Docker 命令入门实战:搞懂这些才算真正入门!
- 08-05Docker 镜像构建加速与镜像瘦身实战,一篇就够!
- 08-05Docker 常用命令手册
- 08-05Docker命令大全详解(39个常用命令)
- 08-05Docker镜像越来越大?我用这 3 个技巧直接瘦身 80%!附实战优化对比
- 08-05Docker容器与镜像详解(6大核心区别)
- 08-05docker镜像操作
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)