查看: 107|回复: 0

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

[复制链接]

1418

主题

4

回帖

4319

积分

超级版主

积分
4319
发表于 2026-8-4 10:07:38 | 显示全部楼层 |阅读模式
          做 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: [mysql,redis]
restart容器重启策略restart: always(异常自动重启)
command覆盖镜像默认启动命令command: redis-server --requirepass 123
healthcheck健康检测,等待服务就绪再启动依赖定时检测数据库是否可用



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


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

1. 启停项目核心命令

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

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

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

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

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

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

  13. # 彻底清理:容器+网络+数据卷(谨慎操作,数据清空)
  14. docker compose down -v
复制代码

2. 查看、调试命令

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

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

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

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

  9. # 校验yml配置是否语法错误
  10. docker compose config
复制代码

四、零基础可直接复制实战案例:AI 开发常用 Flask+Redis


1. 项目目录结构

plaintext
  1. flask-ai-demo/
  2. ├── docker-compose.yml  # 核心配置文件
  3. ├── app.py               # AI/后端主程序
  4. └── requirements.txt     # Python依赖包
复制代码

2. docker-compose.yml 完整配置

yaml
  1. services:
  2.   web:
  3.     build: .
  4.     ports:
  5.       - "5000:5000"
  6.     volumes:
  7.       - .:/app  # 本地代码挂载,修改无需重构建镜像
  8.     environment:
  9.       REDIS_HOST: redis
  10.     depends_on:
  11.       redis
  12.     restart: unless-stopped

  13.   redis:
  14.     image: redis:alpine
  15.     ports:
  16.       - "6379:6379"
  17.     volumes:
  18.       - redis-data:/data
  19.     restart: always

  20. volumes:
  21.   redis-data:
复制代码


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

python
  1. from flask import Flask
  2. import redis

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

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

  9. if __name__ == "__main__":
  10.     app.run(host="0.0.0.0", port=5000)
复制代码

4. 一键启动项目

进入文件夹执行:

bash
  1. docker compose up -d
复制代码

浏览器访问 localhost:5000 即可运行整套带缓存的 AI Web 服务。

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


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

yaml
  1. version: "3.8"
  2. services:
  3.   mysql:
  4.     image: mysql:8.0
  5.     ports:
  6.       - "3306:3306"
  7.     environment:
  8.       - MYSQL_ROOT_PASSWORD=root123
  9.       - MYSQL_D=ai_db
  10.     volumes:
  11.       - mysql-data:/var/lib/mysql
  12.     restart: always
  13.     command: --default-authentication-plugin=mysql_native_password

  14.   redis:
  15.     image: redis:7-alpine
  16.     ports:
  17.       - "6379:6379"
  18.     volumes:
  19.       - redis-data:/data
  20.     restart: always

  21.   ai-web:
  22.     build: ./ai-server
  23.     ports:
  24.       - "8080:8080"
  25.     depends_on:
  26.       - mysql
  27.       - redis
  28.     volumes:
  29.       - ./code:/app
  30.     restart: unless-stopped

  31. volumes:
  32.   mysql-data:
  33.   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 一键部署,大幅降低环境搭建、换电脑迁移的时间成本。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

QQ客服返回顶部