Ollama+Open WebUI一键部署:用Docker Compose在CentOS7搭建AI对话平台

从单机到团队:基于Docker Compose的Ollama+Open WebUI企业级部署实战

最近在帮几个中小型技术团队搭建内部AI对话平台时,我发现了一个普遍现象:大家往往从简单的单机测试开始,但当需要将服务扩展到团队共享时,就会遇到各种环境配置、资源管理和访问控制的问题。特别是那些还在使用CentOS 7这类稳定但软件源相对陈旧系统的团队,既要保证服务的稳定性,又要兼顾部署的便捷性,确实需要一套经过验证的解决方案。

经过多次实践和优化,我总结出了一套基于Docker Compose的完整部署方案,不仅解决了从单机到团队的平滑升级问题,还融入了GPU资源分配、Nginx反向代理、数据持久化等企业级功能。今天我就把这套方案分享出来,希望能帮助更多团队快速落地自己的AI应用。

1. 环境准备与系统优化

在CentOS 7上部署现代AI应用,首先要解决的是系统环境兼容性问题。很多团队遇到的第一个坑就是glibc版本过低——Ollama官方二进制包要求glibc 2.27以上,而CentOS 7默认只有2.17。与其冒险升级系统库(可能破坏yum等核心工具),不如直接采用Docker容器化方案,完美绕过环境依赖问题。

1.1 系统基础检查与资源评估

部署前,先用几个简单命令确认系统状态:

# 确认CentOS 7版本
cat /etc/redhat-release

# 检查CPU核心数(大模型推理依赖多核并行)
lscpu | grep "CPU(s):"

# 查看内存情况(7B量级模型至少需要4GB,建议8GB以上)
free -h

# 检查磁盘空间(模型文件通常数百MB到数GB)
df -h /var/lib/docker

注意:如果系统内存不足,可以考虑添加swap空间。对于16GB内存的服务器,我通常配置8GB的swap:

# 创建swap文件
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

1.2 Docker环境部署与优化

CentOS 7的默认yum源中Docker版本较旧,我们需要添加官方源:

# 安装必要依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker官方源(使用阿里云镜像加速)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
sudo docker --version

国内环境拉取镜像速度可能较慢,配置镜像加速器至关重要。我测试过多个镜像源,下面这个配置组合在实际项目中表现最稳定:

{
  "registry-mirrors": [
    "https://docker.1ms.run/",
    "https://mirror.aliyuncs.com/",
    "https://docker.mirrors.ustc.edu.cn/"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

将上述配置保存到/etc/docker/daemon.json,然后重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证镜像源生效
docker info | grep -A 5 "Registry Mirrors"

1.3 Docker Compose安装

虽然可以通过docker-compose-plugin安装,但我更推荐独立安装方式,便于版本管理和离线部署:

# 下载最新稳定版(截至2025年1月为v2.24.5)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname%20-s)-$(uname%20-m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接(兼容旧命令)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

如果服务器无法访问GitHub,可以提前在能联网的机器下载好,然后通过scp传输到服务器。

2. Docker Compose编排架构设计

单容器部署简单,但缺乏扩展性和可维护性。Docker Compose让我们能够用声明式的方式定义整个服务栈,实现一键部署和统一管理。下面是我在实际项目中打磨出的生产级配置。

2.1 基础服务编排配置

创建项目目录并编写docker-compose.yml

version: '3.8'

services:
  ollama:
    image: ollama/ollama:0.3.0
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
      - ./models:/models  # 外部模型挂载点
    environment:
      - OLLAMA_HOST=0.0.0.0:11434
      - OLLAMA_NUM_THREADS=${OLLAMA_THREADS:-4}
      - OLLAMA_GPU=${OLLAMA_GPU:-0}
    deploy:
      resources:
        limits:
          cpus: '${OLLAMA_CPU_LIMIT:-4.0}'
          memory: ${OLLAMA_MEM_LIMIT:-8G}
        reservations:
          memory: ${OLLAMA_MEM_RESERVE:-4G}
    restart: unless-stopped
    networks:
      - ai-network

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "18089:8080"
    volumes:
      - webui_data:/app/backend/data
      - ./uploads:/app/backend/data/uploads  # 用户上传文件持久化
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:-your-secret-key-change-me}
      - ENABLE_SIGNUP=${ENABLE_SIGNUP:-false}  # 生产环境建议关闭自助注册
    depends_on:
      - ollama
    restart: unless-stopped
    networks:
      - ai-network

volumes:
  ollama_data:
    driver: local
  webui_data:
    driver: local

networks:
  ai-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

这个配置有几个关键设计点:

  1. 版本固定:明确指定Ollama版本(0.3.0),避免自动升级带来的不兼容问题
  2. 资源限制:通过deploy.resources限制容器资源使用,防止单个服务耗尽系统资源
  3. 环境变量配置:使用环境变量文件管理敏感配置,便于不同环境部署
  4. 独立网络:创建专用网络,增强服务隔离性和安全性

2.2 环境变量配置文件

创建.env文件管理配置参数:

# Ollama配置
OLLAMA_THREADS=8
OLLAMA_GPU=0  # 0=CPU only, 1=启用GPU
OLLAMA_CPU_LIMIT=6.0
OLLAMA_MEM_LIMIT=12G
OLLAMA_MEM_RESERVE=6G

# Open WebUI配置
WEBUI_SECRET_KEY=your-production-secret-key-here
ENABLE_SIGNUP=false
DEFAULT_MODEL=qwen:7b-chat

# 网络配置
WEBUI_PORT=18089
OLLAMA_PORT=11434

# 路径配置
MODELS_DIR=/data/ollama/models
UPLOADS_DIR=/data/webui/uploads

安全提示WEBUI_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值