Skip to content

Docker 部署

推荐的 LambChat 生产环境部署方式。

快速开始

bash
# 克隆仓库
git clone https://github.com/Yanyutin753/LambChat.git
cd LambChat

# 复制并编辑环境文件
cp deploy/.env.example .env
# 编辑 .env 填入你的配置

# 启动所有服务
docker compose -f deploy/docker-compose.yml up -d

架构

Docker Compose 启动三个服务:

服务镜像端口说明
lambchat自定义构建8000LambChat 应用(FastAPI + 静态前端)
mongomongo:727017MongoDB 数据库
redisredis:7-alpine6379Redis 缓存和发布/订阅

配置

环境变量

deploy/.env.example 复制为 .env 并配置:

bash
# 推荐:设置稳定的 JWT 密钥(不设置则每次重启自动生成,导致已登录用户失效)
JWT_SECRET_KEY=your-stable-secret-key

# 推荐:设置 MCP 加密盐值(不设置则每次重启自动生成,导致已保存的 MCP 配置失效)
MCP_ENCRYPTION_SALT=your-stable-encryption-salt

# 可选:配置 MongoDB 连接
MONGODB_URL=mongodb://localhost:27017
MONGODB_DB=agent_state
MONGODB_USERNAME=admin
MONGODB_PASSWORD=your-mongo-password

# 可选:配置 Redis 连接
REDIS_URL=redis://localhost:6379/0
REDIS_PASSWORD=your-redis-password

TIP

LLM 模型通过部署后的 模型配置 UI 添加,无需在环境变量中配置。详见模型配置

完整参考见环境变量

反向代理

生产环境建议使用反向代理(nginx、Traefik、Caddy)并配置 SSL:

nginx 示例:

nginx
server {
    listen 443 ssl http2;
    server_name lambchat.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SSE 支持
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 86400s;
    }
}

使用反向代理时,设置 APP_BASE_URL

bash
APP_BASE_URL=https://lambchat.example.com

管理服务栈

bash
# 启动服务
docker compose -f deploy/docker-compose.yml up -d

# 查看日志
docker compose -f deploy/docker-compose.yml logs -f lambchat

# 停止服务
docker compose -f deploy/docker-compose.yml down

# 重启应用(保留数据)
docker compose -f deploy/docker-compose.yml restart lambchat

# 代码变更后重新构建
docker compose -f deploy/docker-compose.yml up -d --build lambchat

数据持久化

Docker Compose 使用命名卷来持久化数据:

  • mongo_data — MongoDB 数据
  • redis_data — Redis 数据
  • uploads — 上传的文件(本地存储模式)

这些卷在容器重启和重建时保持不变。