发现全球最佳 AI 工具

从零教你部署与精通,掌握实战变现工作流

Docker Compose 搭建 AI 服务环境教程封面图,展示 AI 工具容器编排、模型服务和自动化工作流

Docker Compose 搭建 AI 服务环境教程:从零搭建自动化、聊天、模型 API 与本地 AI 服务环境,新手也能照着部署

本文是一篇面向新手的 Docker Compose 搭建 AI 服务环境教程,系统讲解 Docker Compose 安装、compose.yaml 写法、Ollama + Open WebUI、n8n、Dify、LocalAI、Flowise 等服务部署,并提供 GPU 加速、反向代理、备份升级和常见问题排查。

封面图:Docker Compose 编排本地 AI 服务环境

文档类型网站发布教程 + SEO 文档
适用对象AI 工具站编辑、独立开发者、内容创作者、运维新手
核心场景Ollama + Open WebUI、n8n、Dify、LocalAI、Flowise、数据库与反向代理
建议发布分类保姆级教程 / 安装部署教程 / 自动化工作流

标题

  • Docker Compose 搭建 AI 服务环境教程:新手也能一键部署本地 AI 工具
  • 从零搭建 AI 服务环境:用 Docker Compose 部署 Ollama、Open WebUI、n8n、Dify
  • 不用反复装环境!Docker Compose 一次管理所有 AI 工具服务
  • 本地 AI 工具部署保姆级教程:Docker Compose 从入门到可用

文章摘要

想在一台电脑或 Linux 服务器上同时运行 Ollama、Open WebUI、n8n、Dify、LocalAI、Flowise 等 AI 工具,最容易遇到的问题不是模型不会用,而是端口冲突、依赖混乱、数据丢失和升级困难。Docker Compose 的价值,就是把多个容器服务写进一个 compose.yaml 文件,用一组命令统一启动、停止、升级、查看日志和备份。

这篇教程从 Docker Compose 的安装、目录结构、compose.yaml 写法讲起,逐步演示如何搭建本地 AI 服务环境,并给出适合新手的排错树、备份方案和安全建议。

一、为什么 AI 工具部署更适合用 Docker Compose?

单个 AI 工具可以用 docker run 启动,但一旦涉及 WebUI、模型服务、数据库、缓存、向量库、反向代理、HTTPS,就会变成多服务协作。Docker Compose 正是为“多容器应用”设计的:用 YAML 文件定义 services、networks、volumes、environment 等配置,然后通过 docker compose up -d 统一启动。

方式适合场景优点缺点
直接安装到系统只装一个简单工具容易理解,少一层容器概念污染系统环境,迁移和重装麻烦
docker run临时测试单个服务命令直观,启动快参数一多就难维护,无法优雅管理多服务
Docker ComposeAI 服务栈、自托管平台、数据库联动配置可复用,方便升级、备份、迁移需要学习 compose.yaml 基础写法
Kubernetes企业级集群和弹性扩缩容高可用、可扩展新手成本高,不适合入门阶段

新手建议:本地电脑或一台 VPS/服务器,优先 Docker Compose;只有当服务规模变大、需要弹性伸缩和多节点调度时,再考虑 Kubernetes。

二、部署前准备:电脑、系统与软件要求

Docker 官方文档说明,Docker Desktop 会同时包含 Docker Engine、Docker CLI 和 Docker Compose,是 Windows、macOS 和桌面 Linux 用户最省事的安装方式;Linux 服务器则通常安装 Docker Engine 后,再安装 Docker Compose plugin。

环境推荐配置说明
Windows 10/11Docker Desktop + WSL2适合本地学习。大体量模型建议把项目放在 Linux 文件系统中,避免挂载性能问题。
macOSDocker DesktopApple Silicon 可运行多数轻量 AI 服务,但 NVIDIA GPU 加速不适用。
Ubuntu/Debian 服务器Docker Engine + compose plugin生产和长期自托管首选。
NVIDIA GPU 服务器Docker Engine + NVIDIA Container Toolkit用于 Ollama、LocalAI、vLLM、ComfyUI 等需要 GPU 的场景。
最低建议2 核 CPU / 4GB 内存 / 30GB 磁盘能跑轻量 Web 服务;大模型和 Dify 等平台建议更高配置。

三、安装 Docker Compose 并验证

1. Windows / macOS:安装 Docker Desktop

1.  访问 Docker 官网,下载对应系统的 Docker Desktop。

2.  Windows 用户按提示启用 WSL2;安装完成后重启电脑。

3.  打开终端,执行 docker –version 和 docker compose version。

4.  能看到版本号,说明 Docker 和 Compose 都已就绪。

docker –version
docker compose version
docker info

2. Linux 服务器:安装 Compose 插件

如果已经安装 Docker Engine,可以使用发行版软件源安装 Compose plugin。Docker 官方 Linux 插件文档给出的 Ubuntu/Debian 命令如下:

sudo apt-get update
sudo apt-get install docker-compose-plugin
docker compose version

注意:现在推荐使用 docker compose 命令;老版本 docker-compose 属于 standalone legacy 路线,不建议新项目优先使用。

四、先看懂 compose.yaml:新手必须掌握的 8 个字段

Compose 文件建议命名为 compose.yaml 或 docker-compose.yml。新项目优先使用 compose.yaml。下面是 AI 服务部署最常用的字段:

字段作用AI 部署中的常见用法
services定义容器服务open-webui、ollama、postgres、redis、n8n 等
image指定镜像ghcr.io/open-webui/open-webui:main、ollama/ollama 等
ports端口映射3000:8080、11434:11434、5678:5678
volumes持久化数据模型、数据库、上传文件、配置目录
environment环境变量API Key、数据库连接、服务地址
env_file加载 .env 文件统一管理密码和开关配置
depends_on启动顺序依赖让 Web 服务在数据库之后启动
networks容器网络让多个服务通过服务名互相访问

更安全的做法是把密码、Token、API Key 放在 .env 或 Docker secrets 中,不要直接写死在 compose.yaml 里。Docker 官方也提醒,环境变量可能在日志或调试中泄露,敏感信息更适合使用 secrets。

五、推荐项目目录结构

ai-stack/
├─ compose.yaml
├─ .env
├─ data/
│  ├─ open-webui/
│  ├─ ollama/
│  ├─ n8n/
│  └─ postgres/
├─ backups/
└─ README.md
  • compose.yaml:服务编排主文件。
  • .env:端口、密码、模型服务地址等变量。
  • data/:持久化数据目录,不要随便删除。
  • backups/:升级和迁移前保存备份。
  • README.md:记录服务端口、管理员账号、升级步骤。

六、Docker Compose 部署总流程图

图:从机器准备到服务启动、验证和备份的完整流程

七、AI 服务架构图:WebUI、模型、数据库如何协作

图:Docker Compose 管理访问层、应用层、模型层和数据层

八、实战一:Ollama + Open WebUI 本地聊天服务

Open WebUI 官方文档说明,Docker 是多数用户推荐的部署方式,Open WebUI 可连接 Ollama 与 OpenAI-compatible API。下面这个 Compose 示例适合在本地或内网服务器上快速搭建一个 ChatGPT 风格的本地聊天界面。

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      – “11434:11434”
    volumes:
      – ollama:/root/.ollama

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    depends_on:
      – ollama
    ports:
      – “3000:8080”
    environment:
      OLLAMA_BASE_URL: http://ollama:11434
    volumes:
      – open-webui:/app/backend/data

volumes:
  ollama:
  open-webui:

启动命令:

docker compose up -d
docker compose ps
docker compose logs -f open-webui

访问地址:浏览器打开 http://localhost:3000。首次进入后创建管理员账号,再到 Ollama 中拉取模型。

docker exec -it ollama ollama pull qwen2.5:7b
docker exec -it ollama ollama list

九、GPU 加速:NVIDIA 显卡服务器怎么配置

如果要让容器使用 NVIDIA GPU,宿主机必须先装好 NVIDIA 驱动,并配置 NVIDIA Container Toolkit。NVIDIA 官方文档给出的 Docker 配置步骤包括执行 nvidia-ctk runtime configure –runtime=docker,然后重启 Docker daemon。

nvidia-smi
sudo nvidia-ctk runtime configure –runtime=docker
sudo systemctl restart docker

Compose 中常见的 GPU 写法如下,具体支持情况取决于镜像和 Docker 版本:

services:
  ollama:
    image: ollama/ollama:latest
    ports:
      – “11434:11434”
    volumes:
      – ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            – driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  ollama:

验证容器是否看到 GPU:

docker run –rm –gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

十、实战二:n8n + PostgreSQL 自动化工作流服务

n8n 官方 Docker 文档提供了 Docker 与 PostgreSQL 自托管路线。生产或长期使用时,建议使用 PostgreSQL,不建议只依赖临时容器文件系统。

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      – postgres_data:/var/lib/postgresql/data

  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    depends_on:
      – postgres
    ports:
      – “5678:5678”
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
      DB_POSTGRESDB_USER: ${POSTGRES_USER}
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
      N8N_HOST: ${N8N_HOST}
      N8N_PROTOCOL: ${N8N_PROTOCOL}
      WEBHOOK_URL: ${WEBHOOK_URL}
      GENERIC_TIMEZONE: Asia/Shanghai
    volumes:
      – n8n_data:/home/node/.n8n

volumes:
  postgres_data:
  n8n_data:

.env 示例:

POSTGRES_USER=n8n
POSTGRES_PASSWORD=请改成强密码
POSTGRES_DB=n8n
N8N_HOST=example.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://example.com/

十一、实战三:Dify 自托管部署路线

Dify 官方文档提供 Docker Compose 快速部署路线,部署前最低硬件要求为 2 核 CPU、4 GiB 内存;在 macOS Docker Desktop 场景中还建议给 Docker 虚拟机分配至少 2 个 vCPU 和 8 GiB 内存。

LATEST_TAG=$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | \
  jq -r .tag_name)
git clone –branch “$LATEST_TAG” https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

Dify 服务较多,新手不建议一开始就手写全部 compose.yaml。更稳妥的方式是先用官方 docker 目录跑通,再按实际需要修改 .env、域名、存储、模型供应商和向量数据库。

十二、实战四:LocalAI 作为本地 OpenAI 兼容 API

LocalAI 官方容器文档说明,它支持 Docker、Podman 等 OCI 兼容容器引擎;Quickstart 文档也将其定位为可替代 OpenAI/Anthropic 等接口的本地 REST API。适合把本地模型包装成统一 API,供 n8n、Dify、自写应用调用。

services:
  localai:
    image: localai/localai:latest
    restart: unless-stopped
    ports:
      – “8080:8080”
    environment:
      DEBUG: “false”
    volumes:
      – ./models:/models
      – localai_data:/tmp/localai

volumes:
  localai_data:

启动后可访问 http://localhost:8080,或把 OpenAI SDK 的 base_url 指向 LocalAI 服务地址。

十三、实战五:Flowise 可视化 AI 工作流

Flowise 可用于可视化搭建 Chatflow、Agentflow 和知识库工作流。官方 Docker 说明中,常见步骤是创建 .env 文件、执行 docker compose up -d,然后访问 localhost:3000。

services:
  flowise:
    image: flowiseai/flowise:latest
    restart: unless-stopped
    ports:
      – “3001:3000”
    environment:
      PORT: 3000
      DATABASE_PATH: /root/.flowise
      FLOWISE_USERNAME: ${FLOWISE_USERNAME}
      FLOWISE_PASSWORD: ${FLOWISE_PASSWORD}
    volumes:
      – flowise_data:/root/.flowise

volumes:
  flowise_data:

十四、反向代理与 HTTPS:公网部署必须做

如果 AI 服务只在本机或内网访问,可以先不配置域名。但如果要开放到公网,至少要做三件事:绑定域名、启用 HTTPS、添加登录鉴权。不要把 Open WebUI、n8n、Dify、Flowise 的管理页面裸露在公网端口上。

组件作用新手建议
Caddy自动 HTTPS 反向代理配置简单,适合新手
Nginx Proxy Manager图形化反向代理适合不想手写 Nginx 配置的人
Traefik自动发现 Docker 服务适合进阶用户和多服务环境
Cloudflare Tunnel不开放服务器端口也能访问适合家用宽带、内网穿透场景
services:
  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      – “80:80”
      – “443:443”
    volumes:
      – ./Caddyfile:/etc/caddy/Caddyfile
      – caddy_data:/data
      – caddy_config:/config

volumes:
  caddy_data:
  caddy_config:

十五、常用运维命令:部署后每天都会用

目标命令
启动服务docker compose up -d
停止服务docker compose stop
停止并删除容器docker compose down
查看状态docker compose ps
查看日志docker compose logs -f 服务名
重启单个服务docker compose restart 服务名
拉取新镜像docker compose pull
升级并重建docker compose up -d –pull always
进入容器docker exec -it 容器名 bash
查看磁盘占用docker system df

十六、备份、升级与迁移:别等数据丢了才后悔

Docker Compose 的核心数据通常在 volumes 或绑定目录中。升级前至少备份三类内容:compose.yaml、.env、数据卷/绑定目录。对于 PostgreSQL、MySQL 等数据库,建议用数据库自身的 dump 工具导出。

# 备份项目配置
tar -czf backups/ai-stack-config-$(date +%F).tar.gz compose.yaml .env

# 查看数据卷
docker volume ls

# 备份 PostgreSQL 示例
docker exec -t postgres pg_dump -U n8n n8n > backups/n8n-$(date +%F).sql

升级建议流程:先备份,再 docker compose pull,最后 docker compose up -d。升级后第一时间检查 docker compose ps 和 logs。

十七、常见问题排查树

图:AI 服务用 Docker Compose 部署后的常见报错排查顺序

十八、新手最容易犯的 10 个错误

1.  把密码直接写进 compose.yaml,还上传到 GitHub。

2.  没有使用 volumes,容器删除后数据一起没了。

3.  把数据库、模型、上传文件都放在临时容器层。

4.  公网部署不加 HTTPS、不加登录、不限制端口。

5.  每次出错就重装系统,而不是先看 docker compose logs。

6.  Windows 下把大型模型放在慢速挂载目录中,导致加载很慢。

7.  不知道容器内服务名可以互相访问,比如 http://ollama:11434。

8.  盲目升级 latest 镜像,结果和旧配置不兼容。

9.  GPU 容器没配置 NVIDIA Container Toolkit,却以为是模型问题。

10.  同一台机器多个服务抢 3000、5678、7860、8080 等常用端口。

十九、FAQ:Docker Compose 搭建 AI 服务常见问答

Q1:Docker Compose 和 Docker Desktop 是一回事吗?

不是。Docker Desktop 是桌面端软件包,通常包含 Docker Engine、CLI 和 Compose;Docker Compose 是用于定义和运行多容器应用的工具。

Q2:新手必须会写 Dockerfile 吗?

不必须。多数 AI 工具已经提供官方镜像,新手先学会 compose.yaml、ports、volumes、environment 即可。

Q3:为什么容器启动了但浏览器打不开?

先看 docker compose ps 是否 Up,再确认 ports 是否映射正确,最后检查防火墙、安全组和服务日志。

Q4:Open WebUI 连接不上 Ollama 怎么办?

在同一个 Compose 网络中,Open WebUI 访问 Ollama 应使用 http://ollama:11434,而不是宿主机的 localhost。

Q5:docker compose down 会删除数据吗?

默认不会删除 named volumes,但 docker compose down -v 会删除 volumes。生产环境不要随便加 -v。

Q6:能不能所有服务都用 latest?

学习阶段可以;生产环境建议固定版本标签,并在升级前备份。

Q7:GPU 加速一定要装 CUDA Toolkit 吗?

容器场景通常更关键的是宿主机 NVIDIA 驱动和 NVIDIA Container Toolkit。很多镜像自带运行所需 CUDA 组件。

Q8:.env 文件能不能提交到仓库?

不建议。可以提交 .env.example,但真实 .env 应加入 .gitignore。

Q9:Dify 为什么比 Open WebUI 更吃资源?

Dify 通常包含 API、Web、Worker、数据库、Redis、向量库等多个服务,资源需求自然更高。

Q10:家用电脑适合长期跑 Docker Compose AI 服务吗?

适合学习和个人使用;长期公网服务更建议 Linux 服务器、稳定电源、备份和监控。

官方参考来源

  • Docker Compose 安装概览:https://docs.docker.com/compose/install/
  • Docker Compose Linux 插件安装:https://docs.docker.com/compose/install/linux/
  • Docker Compose 文件参考:https://docs.docker.com/reference/compose-file/
  • Docker Compose secrets:https://docs.docker.com/compose/how-tos/use-secrets/
  • NVIDIA Container Toolkit 安装指南:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
  • Open WebUI Quick Start:https://docs.openwebui.com/getting-started/quick-start/
  • Dify Docker Compose 部署:https://docs.dify.ai/en/self-host/quick-start/docker-compose
  • LocalAI 容器安装:https://localai.io/installation/containers/index.html
  • n8n Docker 安装:https://docs.n8n.io/hosting/installation/docker/
  • Flowise Docker 说明:https://github.com/FlowiseAI/Flowise/blob/main/docker/README.md

Facebook
LinkedIn
Reddit
X
Email
WhatsApp
Telegram
Pinterest
Mix

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注