接好运鸭 发表于 2026-8-4 10:07:38

Docker Compose 零基础完整教程:告别一堆 docker 命令,一键编排多容器服务

          做 AI 项目、Web 开发、后端部署时,一套系统通常包含 Web 服务、数据库、缓存、中间件多个容器。如果只用原生docker run,每一个服务都要敲一长串参数,换电脑部署还要复制全部命令,极易出错。
          Docker Compose 就是官方配套多容器编排工具,仅靠一份docker-compose.yml配置文件,一条命令就能完成整套服务启动、停止、重建、清理。本文属于 AI 编程零基础系列第 16 讲,从基础概念、核心配置字段、高频命令到可直接复制实战案例完整讲解,新手看完就能上手本地开发与小型项目部署。
一、Docker 和 Docker Compose 核心区别,先搞懂定位


1. Docker 基础能力


Docker 是容器引擎,负责单个容器的创建、镜像打包、运行。
缺点:多服务项目需要多条超长docker run命令,端口、环境变量、挂载路径分散写,无法统一管理依赖启动顺序,换环境部署成本极高。
类比:单兵作战,一次只能启动一个容器,多个服务需要手动逐个指挥。

2. Docker Compose 核心作用


建立在 Docker 之上的编排工具,核心能力:


[*]使用 YAML 文件统一描述项目所有服务、端口、数据卷、网络、依赖;
[*]单条命令批量启停整套容器;
[*]自动创建项目专属内网,容器间直接用服务名通信;
[*]统一管理数据持久化、重启策略、环境配置。
类比:项目总指挥,一份配置管理全部服务,一键拉起整套开发环境。

适用场景


本地开发环境、测试环境、单机小型 AI 应用、前后端 + 数据库完整项目;大规模集群生产环境一般使用 K8s,Compose 更适合个人与小团队单机使用。

二、docker-compose.yml 四大顶层核心模块


标准配置文件由 4 大模块构成,services是重中之重:


[*]services:所有容器服务定义(Web、MySQL、Redis 等)
[*]volumes:持久化数据卷,容器删除数据库数据不丢失
[*]networks:自定义项目内网,容器互通隔离外部访问
[*]version(新版 V2 可省略):兼容版本,推荐 3.8 语法

services 高频核心字段详解(新手必背)


表格


配置字段作用说明标准示例
image直接拉取官方镜像image: mysql:8.0
build本地 Dockerfile 构建自定义镜像build: ./web
ports宿主机:容器端口映射- "5000:5000"
environment容器内环境变量- MYSQL_ROOT=123456
volumes目录 / 数据卷挂载- mysql-data:/var/lib/mysql
depends_on定义服务启动依赖,先启动依赖服务depends_on:
restart容器重启策略restart: always(异常自动重启)
command覆盖镜像默认启动命令command: redis-server --requirepass 123
healthcheck健康检测,等待服务就绪再启动依赖定时检测数据库是否可用



三、Docker Compose 高频实战命令大全


全部基于 V2 新版语法(命令中间带空格docker compose,非旧版横杠)

1. 启停项目核心命令

bash
# 前台启动,打印实时日志(调试用)
docker compose up

# 后台守护进程启动(开发部署首选)
docker compose up -d

# 构建镜像再后台启动
docker compose up --build -d

# 仅重启单个服务
docker compose restart web

# 停止所有容器,保留数据卷、镜像
docker compose stop

# 停止并删除容器、自定义网络(数据卷保留)
docker compose down

# 彻底清理:容器+网络+数据卷(谨慎操作,数据清空)
docker compose down -v
2. 查看、调试命令

bash
# 查看所有运行容器状态
docker compose ps

# 实时查看全部日志
docker compose logs -f

# 只查看web服务实时日志
docker compose logs -f web

# 进入容器内部终端调试
docker compose exec web bash

# 校验yml配置是否语法错误
docker compose config
四、零基础可直接复制实战案例:AI 开发常用 Flask+Redis


1. 项目目录结构

plaintext
flask-ai-demo/
├── docker-compose.yml# 核心配置文件
├── app.py               # AI/后端主程序
└── requirements.txt   # Python依赖包
2. docker-compose.yml 完整配置

yaml
services:
web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app# 本地代码挂载,修改无需重构建镜像
    environment:
      REDIS_HOST: redis
    depends_on:
      redis
    restart: unless-stopped

redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    restart: always

volumes:
redis-data:

3. 简单 AI 计数示例 app.py

python
from flask import Flask
import redis

app = Flask(__name__)
cache = redis.Redis(host="redis", port=6379)

@app.route("/")
def index():
    count = cache.incr("visit_count")
    return f"AI服务已访问 {count} 次"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
4. 一键启动项目

进入文件夹执行:

bash
docker compose up -d
浏览器访问 localhost:5000 即可运行整套带缓存的 AI Web 服务。

五、数据库完整实战:MySQL+Redis 开发环境


适合 AI 训练平台、数据管理后端直接复用

yaml
version: "3.8"
services:
mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root123
      - MYSQL_D=ai_db
    volumes:
      - mysql-data:/var/lib/mysql
    restart: always
    command: --default-authentication-plugin=mysql_native_password

redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    restart: always

ai-web:
    build: ./ai-server
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis
    volumes:
      - ./code:/app
    restart: unless-stopped

volumes:
mysql-data:
redis-data:

六、新手高频踩坑点与解决方案



[*]yml 文件缩进报错
YAML 严格依赖空格缩进,不能使用 Tab,层级对齐错误直接启动失败,推荐 VS Code 安装 YAML 插件实时校验。
[*]depends_on 只控制启动顺序,不等待服务就绪
数据库启动慢,后端先启动会连不上库,需要搭配healthcheck健康检测等待数据库就绪。
[*]down -v 清空数据卷
执行docker compose down -v会删除数据库持久化文件,本地开发尽量不带 - v 清理。
[*]容器间访问用服务名,不用localhost
Compose 内置内网,web 服务连接 mysql 直接写主机名mysql,不要用 127.0.0.1。
[*]新版 Docker 无需单独安装 Compose
Docker Desktop、新版 Linux Docker 已内置docker compose,无需单独下载二进制文件。

七、全文总结


Docker Compose 是本地 AI 开发、小型后端项目必备工具,核心价值就是一份配置替代几十条 docker 命令。
掌握三件核心内容即可上手:


[*]yml 四大模块与 image/ports/depends_on 等基础字段;
[*]up/down/logs/exec 日常高频命令;
[*]Flask+Redis、MySQL 完整实战模板直接复用。
对于 AI 从业者,本地大模型、向量库、Web 演示服务多容器环境,使用 Compose 一键部署,大幅降低环境搭建、换电脑迁移的时间成本。


页: [1]
查看完整版本: Docker Compose 零基础完整教程:告别一堆 docker 命令,一键编排多容器服务