构建缓存
问题: 先复制全部源码再安装依赖。 为什么: 任意源码变更都会让依赖层缓存失效。 改写片段:
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
预期收益: 构建更快。
镜像体积
问题: 构建工具留在运行时镜像。
改写片段: 使用 multi-stage,只把 dist 和生产依赖复制到 final stage。
预期收益: 镜像更小。
安全
问题: 容器默认 root 运行。 改写片段:
RUN addgroup -S app && adduser -S app -G app
USER app
预期收益: 降低容器逃逸后的影响面。
需要确认
还需要查看 .dockerignore,确认没有把 .env、测试报告和本地缓存打进镜像。