DEPLOYMENT · DOCKER

AI 项目一定需要 Docker 吗?

「上生产 = 先 Docker 化」是最常见的惯性思维。实际上 Docker 是手段不是目的——很多 AI 项目,尤其是纯前端项目,根本不需要它。这篇给出清晰的判断标准。

宇视星技术团队 · 2026-08 · 约 6 分钟阅读

一、Docker 到底解决什么问题?

三个真实价值:

它不解决:代码质量、安全漏洞、成本问题。一个有硬编码密钥的项目装进容器,密钥还是在镜像里。

二、这些情况不需要 Docker

纯静态站是最典型也最常见的场景。build 产物就是几个 HTML/CSS/JS 文件,放对象存储 + CDN 是最优解:

判断标准一句话:build 完没有需要一直运行的东西,就不需要容器。

三、这些情况需要 Docker

四、多服务项目:Docker Compose

前端 + API + PostgreSQL + Redis 的项目,用一个 docker-compose.yml 讲清楚一切:

services:
  api:
    build: ./api
    ports: ["8080:8080"]
    env_file: .env
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:16
    volumes: ["pgdata:/var/lib/postgresql/data"]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]

三个要点:数据库数据必须挂卷;服务间用 healthcheck 控制启动顺序;.env 与 compose 定义分离且永不入 Git。

五、AI 生成 Dockerfile 的四个高频问题

  1. root 用户运行——容器逃逸风险被放大。加 USER app 创建普通用户运行
  2. 镜像 1GB+——没用多阶段构建,把 node_modules、编译工具链全打进了运行镜像。合理体积通常在 200MB 以内
  3. 没有 HEALTHCHECK——进程假死(端口在监听但不响应)时编排层毫无感知
  4. 危险挂载——挂载 /var/run/docker.sock 或开 privileged,等于把宿主机钥匙交出去。AI 时不时会在「解决权限问题」时给出这类方案,要警惕

六、一张决策表

情况用不用容器理由
纯静态站不用OSS/COS + CDN 更便宜、更稳、更安全
静态 + 少量接口通常不用云函数托管接口即可
单个 API 服务环境一致 + 自动重启 + 健康检查
SSR 应用常驻进程需要容器化运行时
多服务Compose统一编排、网络隔离、启动顺序
需要 privileged 的方案人工评估优先找无特权替代方案

结语

Docker 化本身不产生价值,「为这个项目形态选对运行方式」才产生价值。宇视星的部署决策引擎做的就是这件事:输入项目结构,输出 STATIC_HOSTING / SERVERLESS / CONTAINER 的推荐路径和理由,而不是无脑容器化。