Docker Compose 介绍
1. 什么是
docker-compose.yml
?
docker-compose.yml
docker-compose.yml
是 Docker Compose 的配置文件,用于定义和管理多个 Docker 容器的运行方式。
它允许你用一个 YAML 文件描述多个容器的服务、网络、数据卷等,并通过简单的命令快速启动和管理整个应用。
2.
docker-compose.yml
的作用
docker-compose.yml
-
批量管理多个容器:一条命令就可以启动/停止多个容器,而不需要手动
docker run。
-
定义容器间的依赖关系:指定某个服务在另一个服务启动后运行,比如 Web 应用依赖于数据库。
-
简化环境配置:通过
environment指定环境变量,减少手动配置。
-
支持数据持久化:可以使用
volumes挂载数据,避免数据丢失。
-
支持不同的运行环境:可以使用
docker-compose.override.yml适配开发、测试、生产环境。
-
提供一致的开发环境:开发人员可以用相同的
docker-compose.yml文件,确保所有人运行的是相同的环境。
3.
docker-compose.yml
基本语法
docker-compose.yml
docker-compose.yml
是一个 YAML 文件,它的基本结构如下:
version: '3.8' # Docker Compose 文件版本
services: #定义多个服务服务名称:
image: 镜像名 # 或者使用 build 构建
build: . # 指定 Dockerfile 目录
ports: # 端口映射
- "宿主机端口:容器端口"
environment: # 设定环境变量
变量名: 值
volumes: # 挂载卷(持久化数据)
- "宿主机路径:容器路径"
depends_on: # 依赖关系
- 其他服务名称
volumes: # 定义数据卷(可选)
卷名:
networks: # 定义网络(可选)
自定义网络:
4.
docker-compose.yml
的使用
docker-compose.yml
1) 编写
docker-compose.yml
docker-compose.yml
假设你有一个
docker-compose.yml
文件:
version: '3.8'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
2) 启动服务
运行以下命令:
docker-compose up -d # 在后台启动所有容器
-d代表后台运行,如果去掉
-d,它会在前台运行并显示日志。
3) 查看运行中的服务
docker-compose ps
4) 查看容器日志
docker-compose logs -f
5) 停止和删除容器
docker-compose down
这将停止并删除所有容器,但不会删除数据卷。
6) 删除所有数据
docker-compose down -v
-v选项会同时删除
volumes,清空存储的数据。
7) 重新构建容器
如果你修改了
Dockerfile
或
docker-compose.yml
,需要重新构建:
docker-compose up --build -d
5.
docker-compose.yml
进阶用法
docker-compose.yml
1) 使用
depends_on
控制服务依赖
depends_on
services:
web:
image: nginx
depends_on:
- db
db:
image: mysql:5.7
depends_on
确保
web
在
db
启动后再运行。
2) 使用
volumes
持久化数据
volumes
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
这样
PostgreSQL
数据库不会因容器重启而丢失数据。
3) 自定义网络
networks:
mynetwork:
services:
web:
image: nginx
networks:
- mynetwork
db:
image: mysql
networks:
- mynetwork
所有服务都连接到
mynetwork
网络,能够相互访问。
4) 绑定环境变量
services:
app:
image: myapp
env_file:
- .env
.env
文件内容:
DATABASE_URL=mysql://user:password@db:3306/mydb
这样
.env
里的变量会自动注入。
6.
docker-compose.yml
实战示例
docker-compose.yml
📌 示例:运行 WordPress + MySQL
version: '3.8'
services:
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
运行:
docker-compose up -d
然后访问
http://localhost:8080
即可看到 WordPress。
7.
docker-compose.yml
常用命令
docker-compose.yml
命令 | 作用 |
---|---|
docker-compose up -d |
后台启动容器 |
docker-compose down |
停止并删除容器 |
docker-compose down -v |
删除容器+数据卷 |
docker-compose ps |
查看运行中的容器 |
docker-compose logs -f |
查看实时日志 |
docker-compose restart |
重启所有容器 |
docker-compose exec 容器名 bash |
进入容器 |
docker-compose build |
重新构建镜像 |
8. 总结
✅
docker-compose.yml
的作用:定义多个容器,管理它们的依赖、数据存储、网络等。
✅ 使用步骤:
-
创建
docker-compose.yml -
运行
docker-compose up -d -
使用
docker-compose ps查看状态
-
需要停止时
docker-compose down
✅ 适用于:
-
启动 多容器应用(如 Web + 数据库)
-
本地开发环境
-
测试和 CI/CD
💡 现在你可以轻松用
docker-compose.yml
启动并管理容器了!🚀
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容