Docker Compose 之详解(Detailed Explanation of Docker Compose)
Docker Compose 之详解
当容器数量逐渐增多,你是否感到手忙脚乱?面对复杂的部署场景,是时候祭出神器Docker Compose了!它能帮你优雅地管理多容器应用,一键启动、停止所有服务,不再为复杂的手动操作焦头烂额。
什么是 Docker Compose?
Docker Compose 是 Docker 官方提供的多容器管理工具,允许你通过一个简单的 YAML 配置文件定义和管理多容器服务。
它的核心功能包括:
-
定义多容器:通过一个
docker-compose.yml
文件描述多个服务的构建方式、网络配置和依赖关系。 -
一键管理:启动、停止、重启和查看服务日志都可以通过一条命令完成。
-
跨环境部署:支持开发、测试和生产环境的灵活配置。
为什么要用 Docker Compose?
-
多容器协作的利器
当你的项目依赖多个容器(如 Web 服务 + 数据库 + 缓存),Compose 可以一键启动并连接它们。 -
高效的开发体验
不再需要记住复杂的docker run
参数;通过 Compose,所有配置都在一个文件里。 -
简化部署
无论是本地开发环境还是远程服务器,一份docker-compose.yml
文件搞定部署。 -
减少重复劳动
每次需要启动服务时,不再需要重复输入一大堆命令。
安装 Docker Compose
以下是在 CentOS 下安装 Docker Compose 的步骤:
-
下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
-
验证安装
docker-compose --version
输出类似:Docker Compose version 2.22.0
,表示安装成功。
用 Docker Compose 梭哈一个完整项目
项目场景:Java Web 应用 + MySQL + Redis
当你的项目需要同时运行 Java 应用、MySQL 数据库和 Redis 缓存时,一个简单的docker-compose.yml
文件就可以解决问题。
目录结构:
my-project/
├── app/
│ ├── Dockerfile
│ └── target/demo.jar
├── db/
│ └── init.sql
├── redis/
│ └── redis.conf
└── docker-compose.yml
docker-compose.yml
文件:
version: '3.8'
services:
app:
build:
context:./app
ports:
-"8080:8080"
environment:
-SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/demo
-SPRING_DATASOURCE_USERNAME=root
-SPRING_DATASOURCE_PASSWORD=root
-SPRING_REDIS_HOST=redis
db:
image:mysql:5.7
ports:
-"3306:3306"
environment:
MYSQL_ROOT_PASSWORD:root
MYSQL_DATABASE:demo
volumes:
-./db/init.sql:/docker-entrypoint-initdb.d/init.sql
redis:
image:redis:7.0
ports:
-"6379:6379"
volumes:
-./redis/redis.conf:/usr/local/etc/redis/redis.conf
command:["redis-server","/usr/local/etc/redis/redis.conf"]
启动项目
在项目目录下运行以下命令:
docker-compose up --build
一条命令即可启动 Java Web 应用、MySQL 和 Redis 三个服务。
一键管理多容器
Docker Compose 提供了一系列便捷命令:
-
启动所有服务
docker-compose up
-
停止所有服务
docker-compose down
-
重启指定服务
docker-compose restart app
-
查看服务日志
docker-compose logs -f
使用 Docker Compose 的注意事项
-
容器间通信
Docker Compose 会自动为所有服务创建一个默认网络,服务之间可以通过名称互相访问。 -
数据持久化
确保数据库等重要数据使用挂载卷(volumes
),避免容器重启后数据丢失。 -
资源分配
在生产环境中,可以通过deploy
配置限制 CPU 和内存使用量。 -
环境变量管理
使用.env
文件集中管理敏感信息,例如数据库密码。
总结
当项目需要多个容器协同工作时,Docker Compose 是最值得信赖的“梭哈”工具。它让开发者从繁琐的手动操作中解放出来,将多容器管理变得简单高效。不妨试试为你的项目编写一个docker-compose.yml
文件,体验一下“一键部署”的快感!