Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以通过YAML文件来配置应用服务。然后,只需要一个简单的命令,就能创建并启动配置中的所有服务。
本教程将深入探讨Docker Compose的使用,包括其安装、基础概念、常用命令、高级功能以及最佳实践。
Docker Compose 可以在大多数平台上安装,包括Linux、Windows和macOS。安装方法会因操作系统的不同而略有差异。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Windows和macOS用户通常在安装Docker Desktop时已经包含了Docker Compose,无需额外安装。
验证安装:
docker-compose --version
在使用Docker Compose之前,需要理解几个关键概念。
Docker Compose 配置通常存储在名为docker-compose.yml
的文件中。该文件采用YAML格式,定义了所有相关服务、网络和卷。
version: '3.8'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_DB: exampledb
POSTGRES_USER: exampleuser
POSTGRES_PASSWORD: examplepass
networks:
app-network:
driver: bridge
volumes:
db-data:
在Compose文件中,服务是描述容器运行的方式。服务可以定义使用的镜像、端口映射、环境变量等。
services:
redis:
image: redis:alpine
command: redis-server --appendonly yes
volumes:
- redis-data:/data
volumes:
redis-data:
网络允许容器之间相互通信,卷用于持久化数据。
services:
web:
networks:
- front-end
database:
networks:
- back-end
volumes:
- data-volume:/var/lib/mysql
networks:
front-end:
back-end:
volumes:
data-volume:
Docker Compose 的命令非常直观,以下是一些常用命令的例子。
docker-compose up -d
docker-compose down
docker-compose ps
docker-compose logs
docker-compose up -d --scale web=3
Docker Compose 允许您为不同的环境(如开发、测试和生产)定义不同的配置。
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
可以在Compose文件中定义服务的健康检查,并指定服务的依赖关系。
services:
web:
depends_on:
db:
condition: service_healthy
db:
healthcheck:
test: ["CMD", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
docker-compose.yml
文件和项目代码一起放入版本控制。使用.env
文件或环境变量来覆盖配置。
使用depends_on
字段,并结合健康检查。
可以使用docker-compose up -d
命令,如果有必要,先执行docker-compose build
重建服务。
通过定义卷来处理数据持久化。当服务停止时,卷中的数据仍然会被保留。
确保不同服务使用的端口没有冲突,可以在.env
文件中设置不同的端口。