随机
Enter 搜索 ↑↓ 切换 Esc 清空

docker-compose

命令

定义和运行多容器 Docker 应用的工具

docker-compose

定义和运行多容器 Docker 应用的工具

补充说明

docker-compose 是 Docker 官方的容器编排工具,使用 YAML 文件来定义多容器应用的服务、网络和卷。通过一条命令即可创建并启动所有服务。Docker Compose V2 已集成为 docker compose(无横线)。

语法

# Compose V1(独立命令)
docker-compose [OPTIONS] COMMAND

# Compose V2(Docker 插件,推荐)
docker compose [OPTIONS] COMMAND

常用命令

docker compose up          # 创建并启动所有服务
docker compose down        # 停止并删除容器、网络、镜像和卷
docker compose start       # 启动已存在的服务容器
docker compose stop        # 停止服务容器(不删除)
docker compose restart     # 重启服务容器
docker compose ps          # 列出服务容器
docker compose logs        # 查看服务日志
docker compose build       # 构建或重建服务镜像
docker compose pull        # 拉取服务镜像
docker compose exec        # 在容器中执行命令
docker compose run         # 运行一次性命令
docker compose config      # 验证并查看 compose 文件
docker compose top         # 显示容器内进程

常用选项

-f, --file FILE        # 指定 compose 文件(默认 docker-compose.yml)
-p, --project NAME     # 指定项目名称
--profile PROFILE      # 指定启动的 profile
--env-file FILE        # 指定环境变量文件

docker-compose.yml 示例

version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - api
    restart: unless-stopped

  api:
    image: node:18-alpine
    working_dir: /app
    volumes:
      - ./api:/app
    command: npm start
    environment:
      - DB_HOST=db
      - REDIS_HOST=redis
    restart: unless-stopped

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    restart: unless-stopped

volumes:
  db_data:

常用实例

# 启动所有服务(后台运行)
docker compose up -d

# 启动指定服务
docker compose up -d web db

# 重建并启动
docker compose up -d --build

# 停止并删除所有容器
docker compose down

# 停止并删除容器及数据卷
docker compose down -v

# 查看日志
docker compose logs -f
docker compose logs -f web

# 进入容器
docker compose exec web /bin/sh

# 运行一次性命令
docker compose run --rm api npm install

# 指定配置文件
docker compose -f docker-compose.prod.yml up -d

# 查看服务状态
docker compose ps

# 拉取最新镜像并重启
docker compose pull && docker compose up -d