docker-compose.yml
是 Docker Compose 的配置文件,用于定义和运行多容器 Docker 应用。通过该文件,您可以轻松配置应用的服务、网络和卷等。以下是对 docker-compose.yml
文件的详细解析。
1. 基本结构
一个简单的 docker-compose.yml
文件结构如下:
version: '3' # Docker Compose 文件的版本
services: # 定义服务
web: # 服务名称
image: nginx # 使用的镜像
ports:
- "8080:80" # 映射端口
2. 关键字段
2.1 version
指定 Docker Compose 文件的版本。不同版本支持的功能可能有所不同。常用版本包括 2.x
和 3.x
。
2.2 services
定义应用的各个服务。每个服务都有自己的配置,包括镜像、环境变量、端口映射等。
2.3 服务配置选项
2.3.1 image
指定要使用的 Docker 镜像,可以是本地镜像或远程镜像。
image: nginx:latest # 使用最新的 nginx 镜像
2.3.2 build
如果需要从 Dockerfile 构建镜像,可以使用 build
选项。
build:
context: ./app # Dockerfile 所在目录
dockerfile: Dockerfile # 指定 Dockerfile 名称(可选)
2.3.3 ports
定义容器内部和外部的端口映射。
ports:
- "8080:80" # 将主机的 8080 端口映射到容器的 80 端口
2.3.4 volumes
挂载卷,可以用于持久化数据或共享数据。
volumes:
- ./data:/data # 将主机的 ./data 目录挂载到容器的 /data 目录
2.3.5 environment
设置环境变量。
environment:
- ENV=production
- DEBUG=false
2.3.6 depends_on
指定服务之间的依赖关系,确保某个服务在其他服务启动之前启动。
depends_on:
- db
2.3.7 networks
定义网络配置,服务可以通过网络进行通信。
networks:
my_network:
driver: bridge
3. 完整示例
以下是一个完整的 docker-compose.yml
示例,包含 Web 服务和数据库服务:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydb
volumes:
- db_data:/var/lib/mysql
volumes:
db_data: # 定义持久化数据卷
4. 常用命令
使用 Docker Compose 管理应用的常用命令包括:
启动服务:
docker-compose up
后台启动服务:
docker-compose up -d
停止服务:
docker-compose down
查看服务日志:
docker-compose logs
5. 总结
docker-compose.yml
文件是 Docker Compose 的核心部分,通过它可以方便地定义和管理多容器应用。掌握其结构和配置选项,能够帮助用户快速部署和管理复杂的应用环境。