Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件,您可以配置应用程序需要的所有服务,并使用单个命令来创建和启动这些服务。以下是对 Docker Compose 的详细介绍:
核心概念
服务(Services)
服务是一个运行容器的抽象。每个服务都运行一个镜像,并且可以包含对容器的配置选项,如端口映射、环境变量、卷挂载等。
网络(Networks)
Compose 中的服务默认会连接到一个默认网络,但您可以自定义网络配置,以便控制不同服务之间的通信方式。
卷(Volumes)
卷用于持久化服务生成的数据。它们允许您在容器重新启动时保留数据,并在多个容器之间共享数据。
安装 Docker Compose
在 Linux 系统上,可以通过以下命令安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
在 macOS 和 Windows 上,Docker Desktop 包含了 Docker Compose,无需单独安装。
基本用法
1. 创建 docker-compose.yml
文件
以下是一个简单的 docker-compose.yml
文件示例:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: postgres:latest
environment:
POSTGRES_PASSWORD: example
2. 启动服务
在包含 docker-compose.yml
文件的目录中运行以下命令:
docker-compose up
这将启动定义的所有服务。使用 -d
选项可以在后台运行:
docker-compose up -d
3. 停止和删除服务
停止服务:
docker-compose stop
删除服务:
docker-compose down
4. 检查服务状态
查看正在运行的服务:
docker-compose ps
5. 重新启动服务
docker-compose restart
常用配置选项
build
指定 Dockerfile 所在的目录,允许在启动容器时构建镜像。
services:
web:
build: .
volumes
挂载卷到容器中,允许数据持久化或共享数据。
services:
web:
volumes:
- ./data:/var/www/html
environment
设置环境变量。
services:
web:
environment:
- DEBUG=true
depends_on
定义服务之间的依赖关系,确保某些服务在其他服务之前启动。
services:
web:
depends_on:
- database
高级用法
多个 Compose 文件
您可以使用多个 Compose 文件来覆盖或扩展默认配置。例如:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up
环境变量文件
使用 .env
文件来定义环境变量,Compose 会自动加载这些变量。
DB_PASSWORD=supersecret
在 docker-compose.yml
文件中使用:
services:
database:
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
扩展和覆盖
Compose 文件可以通过继承和扩展其他文件来实现复杂的配置管理。
version: '3.8'
services:
web:
extends:
file: common.yml
service: webapp
实战示例
以下是一个实际应用中的 Docker Compose 配置示例,包含一个 Web 应用和一个数据库服务:
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
environment:
- NODE_ENV=development
database:
image: postgres:latest
ports:
- "5432:5432"
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
以上配置启动了一个 Node.js 应用和一个 PostgreSQL 数据库,并使用卷来持久化数据库数据。
通过 Docker Compose,您可以方便地定义和管理多容器应用程序,简化了开发、测试和部署的流程。
标签:容器,Compose,服务,compose,services,docker,Docker From: https://blog.csdn.net/youziguo/article/details/140187774