济南网站建设群凡科手机建站教程
济南网站建设群,凡科手机建站教程,做一整套网站需要什么,江门网站制作培训学校Chatbot UI 是用户与语言模型交互的第一触点#xff0c;直接决定体验上限。 一次可重复的自动化部署#xff0c;能把上线周期从“天”缩短到“分钟”#xff0c;并降低人为配置差异带来的故障率。 对新手而言#xff0c;掌握标准化部署流程#xff0c;是后续做灰度发布、监…Chatbot UI 是用户与语言模型交互的第一触点直接决定体验上限。一次可重复的自动化部署能把上线周期从“天”缩短到“分钟”并降低人为配置差异带来的故障率。对新手而言掌握标准化部署流程是后续做灰度发布、监控告警等工程化改造的前提。一、手动部署 vs 容器化部署维度传统手动部署Docker 容器化部署资源占用需完整 Linux 用户空间依赖冗余镜像分层复用磁盘增量 50 MB可维护性文档与现场环境易脱节版本与镜像一一对应可回滚扩缩容脚本改配置易出错Compose 一键起多实例跨平台受主机发行版限制任何支持容器引擎的主机均可运行结论新手阶段即引入容器化可显著减少“在我机器上能跑”的尴尬。二、基于 Docker Compose 的完整部署方案以下文件均放置于项目根目录统一由docker-compose up -d启动。1. 前端容器化以 React 为例Dockerfile# 使用官方 Node 镜像作为构建环境 FROM node:18-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --omitdev COPY . . RUN npm run build # 生成静态产物到 build/ # 生产阶段仅保留 Nginx 与静态文件 FROM nginx:1.25-alpine COPY --frombuilder /app/build /usr/share/nginx/html COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80nginx.conf解决 SPA 路由 404events { worker_connections 1024; } http { include /etc/nginx/mime.types; gzip on; # 启用压缩 gzip_types text/plain text/css application/json application/javascript; server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; # 前端 history 路由兜底 location / { try_files $uri $uri/ /index.html; } # 反向代理 /api 到后端 location /api/ { proxy_pass_header Authorization; proxy_set_header Host $host; proxy_pass http://backend:8000; # Compose 服务名 } } }2. 后端容器化Python FastAPI 示例backend/DockerfileFROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD [uvicorn, main:app, --host, 0.0.0.0, --port, 8000]3. Compose 编排文件docker-compose.ymlversion: 3.9 services: frontend: build: # 自动使用上文 Dockerfile context: ./frontend ports: - 80:80 depends_on: - backend backend: build: ./backend ports: - 8000:8000 environment: -LOG_LEVEL: INFO volumes: - ./logs:/app/logs # 持久化日志4. 启动与验证# 1. 构建并后台运行 docker-compose up -d --build # 2. 验证后端健康 curl -s http://localhost:8000/api/health | jq # 3. 验证前端路由 curl -s -o /dev/null -w %{http_code} http://localhost | grep 200三、生产环境 checklist上线前务必逐条勾选将nginx.conf中的server_name改为真实域名并配置 HTTPScertbot 一键申请修改所有默认口令数据库、JWT_SECRET、Nginx 基础认证关闭后端调试模式ENVproduction调整 gzip 级别为 6兼顾 CPU 与压缩率gzip_comp_level 6;为 Nginx 添加client_max_body_size 10m;防止大文件上传失败日志收集容器标准输出 → 主机journald→fluent-bit→ Loki/Grafana业务日志写入/app/logs通过hostPath卷采集避免docker logs混用设置 restart policyrestart: unless-stopped资源限制deploy: resources: limits: cpus: 0.5 memory: 512M四、常见坑位速查跨域浏览器报 CORS 时先确认后端是否返回Access-Control-Allow-Origin而非盲目加代理会话保持若使用 WebSocket请把proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade;写入 Nginx热更新失效前端 dev 时把WATCHPACK_POLLINGtrue传入容器避免轮询节流五、进阶思考题如何在 Compose 体系下实现蓝绿部署做到用户无感知切换当后端需要横向扩容时WebSocket 的会话粘性怎样保证若镜像体积持续膨胀你会如何优化多阶段构建进一步缩减最终体积把上述模板跑通后你已拥有企业级 Chatbot UI 的最小可用交付件。若想继续深入“让 AI 开口说话”可体验从0打造个人豆包实时通话AI动手实验在相同容器化思路下把 ASR、LLM、TTS 串成一条低延迟语音闭环快速验证实时对话场景。