5分钟极速搭建:用Docker Compose打造本地AI聊天室全指南

在人工智能技术日益普及的今天,拥有一个本地运行的AI对话系统不再是遥不可及的梦想。本文将带你通过Docker Compose这一容器编排工具,快速搭建一个结合Ollama大模型与ChatGPT-Web界面的完整解决方案。无需复杂的配置过程,也无需担心硬件兼容性问题,即使是开发新手也能在5分钟内完成部署。

1. 环境准备与工具安装

1.1 系统要求检查

在开始之前,请确保你的设备满足以下基本要求:

  • 操作系统 :Windows 10/11、macOS 10.15+或主流Linux发行版
  • 内存 :至少8GB(推荐16GB以上以获得更流畅体验)
  • 存储空间 :20GB可用空间(用于存放模型文件)
  • 网络连接 :稳定的互联网连接(用于下载Docker镜像和模型)

提示:虽然可以在CPU上运行,但如果有NVIDIA显卡并安装好CUDA驱动,性能会有显著提升。

1.2 Docker与Docker Compose安装

如果你的系统尚未安装Docker,可按以下步骤进行:

Windows/macOS用户

  1. 访问 Docker官网 下载Desktop版本
  2. 双击安装包完成安装
  3. 启动Docker Desktop应用

Linux用户 (以Ubuntu为例):

# 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 设置仓库
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证安装
sudo docker run hello-world

2. 项目配置与部署

2.1 获取项目代码

我们将使用一个已经配置好的docker-compose项目,它整合了Ollama和ChatGPT-Web界面:

git clone https://gitee.com/fly-llm/ollama-chatgpt-web.git
cd ollama-chatgpt-web

2.2 理解docker-compose.yml结构

让我们先看一下核心配置文件的关键部分:

version: '3.5'
services:
  ollama:
    image: ollama/ollama
    ports:
      - "8000:8000"
    environment:
      - OLLAMA_HOST=0.0.0.0:8000
    volumes:
      - ./models:/root/.ollama/models
  
  chatgpt-web:
    image: chenzhaoyu94/chatgpt-web
    ports:
      - "3002:3002"
    environment:
      OPENAI_API_BASE_URL: "http://ollama:8000/v1"
      OPENAI_API_MODEL: "qwen:0.5b"
    depends_on:
      - ollama

这个配置定义了两个服务:

  1. ollama :负责运行大语言模型
  2. chatgpt-web :提供Web聊天界面

2.3 一键启动服务

执行以下命令启动所有服务:

docker-compose up -d

启动后,你可以通过以下命令查看服务状态:

docker-compose ps

正常情况应该看到两个服务都显示为"running"状态。

3. 模型管理与优化

3.1 预置模型选择

在默认配置中,我们使用了Qwen-0.5B模型,这是一个相对轻量级的模型,适合大多数普通配置的电脑。如果你有更强的硬件,可以考虑更换为更大的模型:

模型名称 参数量 最低内存要求 适用场景
qwen:0.5b 0.5B 4GB 快速响应,基础对话
qwen:1.8b 1.8B 8GB 平衡性能与资源
qwen:7b 7B 16GB 更复杂的任务处理

3.2 模型下载与管理

模型会在首次使用时自动下载,但有时可能需要手动干预:

查看已下载模型

docker exec -it ollama ollama list

下载新模型

docker exec -it ollama ollama pull qwen:1.8b

删除模型

docker exec -it ollama ollama rm qwen:0.5b

注意:模型下载速度取决于你的网络连接,大型模型可能需要较长时间。

3.3 模型切换与配置更新

要更换模型,需要修改docker-compose.yml中的OPENAI_API_MODEL环境变量,然后重新启动服务:

docker-compose down
docker-compose up -d

4. 使用与高级配置

4.1 访问Web界面

服务启动后,打开浏览器访问:

http://localhost:3002

你将看到一个简洁的聊天界面,可以直接开始与你的本地AI对话。

4.2 界面功能概览

ChatGPT-Web界面提供了以下主要功能:

  • 多轮对话 :保持上下文连贯的对话体验
  • Markdown渲染 :支持代码块、列表等格式显示
  • 对话历史 :自动保存最近的对话记录
  • 主题切换 :支持深色/浅色模式

4.3 性能优化建议

如果你的系统响应较慢,可以尝试以下优化:

  1. 模型选择

    • CPU用户:使用0.5B或1.8B版本
    • GPU用户:可尝试7B版本
  2. Docker资源限制 : 在docker-compose.yml中为ollama服务添加资源限制:

    ollama:
      deploy:
        resources:
          limits:
            cpus: '2'
            memory: 8G
    
  3. 批处理大小调整 : 通过环境变量控制推理批处理大小:

    environment:
      - OLLAMA_NUM_GPU=1
      - OLLAMA_MAX_LOADED_MODELS=2
    

4.4 常见问题排查

问题1 :Web界面无法连接Ollama服务

  • 检查 docker-compose ps 确认两个服务都在运行
  • 查看Ollama日志: docker logs ollama
  • 确保OPENAI_API_BASE_URL配置正确

问题2 :模型下载失败

  • 尝试手动下载: docker exec -it ollama ollama pull qwen:0.5b
  • 检查网络连接,特别是如果需要特殊网络环境
  • 清理缓存后重试: docker system prune -a

问题3 :响应速度慢

  • 降低模型大小
  • 检查系统资源使用情况
  • 考虑升级硬件配置

5. 安全与维护

5.1 数据持久化

所有模型文件都存储在本地 ./models 目录中,即使删除容器也不会丢失。定期备份此目录可以避免重复下载模型。

5.2 服务更新

要更新到最新版本的容器镜像:

docker-compose pull
docker-compose up -d

5.3 访问控制

如果需要限制访问,可以添加基础认证:

  1. 修改chatgpt-web服务环境变量:
environment:
  AUTH_SECRET_KEY: "your-secret-key"
  AUTH_USERNAME: "admin"
  AUTH_PASSWORD: "securepassword"
  1. 重新部署服务:
docker-compose up -d

现在访问Web界面时需要输入用户名和密码。

在实际使用中,我发现将Ollama与ChatGPT-Web结合的最大优势在于它的响应速度和隐私保护。不同于云端服务,所有数据处理都在本地完成,特别适合处理敏感信息或需要快速响应的场景。对于开发者来说,这个方案也提供了极大的灵活性,可以随时切换不同的模型进行测试。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐