Docker Compose 基础
Docker Compose 的安装、基本使用和常用命令
📋 目录
Docker Compose 安装
安装方式
Docker Compose 已经集成到 Docker Desktop 中,也可以单独安装。
Linux 安装
# 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --versionmacOS/Windows
Docker Desktop 已包含 Docker Compose,无需单独安装。
验证安装
# 查看版本
docker-compose --version
# 或
docker compose versiondocker-compose.yml 文件结构
基本结构
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: password版本说明
version: '3.8':Compose 文件格式版本- 新版本 Docker Compose 可以省略 version
基本命令
docker-compose up
启动服务。
# 启动所有服务(前台)
docker-compose up
# 启动所有服务(后台)
docker-compose up -d
# 启动指定服务
docker-compose up web
# 重新构建镜像后启动
docker-compose up --build
# 强制重新创建容器
docker-compose up --force-recreatedocker-compose down
停止并删除服务。
# 停止并删除容器
docker-compose down
# 删除数据卷
docker-compose down -v
# 删除镜像
docker-compose down --rmi alldocker-compose ps
查看服务状态。
# 查看运行中的服务
docker-compose ps
# 查看所有服务(包括已停止的)
docker-compose ps -adocker-compose logs
查看服务日志。
# 查看所有服务日志
docker-compose logs
# 查看指定服务日志
docker-compose logs web
# 实时查看日志
docker-compose logs -f
# 查看最后 N 行
docker-compose logs --tail=100docker-compose exec
在服务中执行命令。
# 在服务中执行命令
docker-compose exec web ls /app
# 交互式执行
docker-compose exec web /bin/bash服务定义
基本服务定义
services:
web:
image: nginx:latest
container_name: my-nginx
ports:
- "8080:80"
environment:
- NODE_ENV=production
volumes:
- ./app:/app使用 Dockerfile 构建
services:
web:
build: .
ports:
- "8080:80"指定构建上下文
services:
web:
build:
context: .
dockerfile: Dockerfile
args:
- VERSION=1.0.0网络配置
默认网络
Compose 会为每个项目创建一个默认网络。
services:
web:
image: nginx:latest
db:
image: postgres:13
# web 和 db 可以在同一网络中通信自定义网络
services:
web:
image: nginx:latest
networks:
- frontend
db:
image: postgres:13
networks:
- backend
networks:
frontend:
backend:数据卷配置
命名数据卷
services:
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:绑定挂载
services:
web:
image: nginx:latest
volumes:
- ./app:/app
- ./config:/etc/nginx/conf.d实用示例
Web 应用 + 数据库
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
depends_on:
- db
environment:
- DATABASE_URL=postgres://db:5432/mydb
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=mydb
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data: