参考手册
参考手册地址
docker-compose 用于定义和运行多容器,允许使用者用YAML文件来配置(默认名docker-compose.yml)
核心概念:
- 服务(Services):构成应用程序的各个容器,例如 Web 服务器、数据库、缓存等。
- 网络(Networks):容器之间的通信方式,默认创建一个桥接网络,使服务可以通过服务名相互访问。
- 卷(Volumes):持久化存储数据,防止容器删除后数据丢失。
version
指定 Compose 文件格式版本(不是compose应用程序版本),不同版本支持的特性不同。必须是顶级字段,位于文件最开头
version: '3.8' # Compose 文件版本
目前推荐V3.8,这是3.x当前系列的最新稳定版本
从V2开始,version不再是必须关键字,不指定会默认使用最新的
service
每一个compose文件必须包含一个service服务(顶级关键字),其下可定义多个服务
services:
web: # 服务名称
# 服务配置项...
db:
# 服务配置项...
每个服务还可以包含构建部分(build),用于定义如何创建镜像,若未使用则构建部分被忽略,如以下通过dockerfile构建
services:
webapp:
build: ./dir
更多参考文档
常见配置:
- image:使用的镜像
- ports 端口映射
- volumes:数据卷
- environment 环境变量
- env_file从外部文件导入环境变量
env_file: .env
- depends_on 定义服务启动顺序
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres:18
- networks 指定加入的网络,docker默认使用桥接
networks
通过该关键字可以自定义网络
networks:
app-network: # 定义自定义网络,默认是桥接模式
driver: bridge
volumes
命名卷由Docker管理,存储在宿主机的特定目录(默认/var/lib/docker/volumes),可通过名称引用