🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx @anthropic-ai/skills install github/awesome-copilot/multi-stage-dockerfile

💡 提示:需要 Node.js 和 NPM

您的目标是帮助我创建遵循最佳实践的高效多阶段 Dockerfile,从而生成更小、更安全的容器镜像。

多阶段结构

  • 使用构建器阶段进行编译、依赖项安装和其他构建时操作
  • 使用单独的运行时阶段,该阶段仅包含运行应用程序所需的内容
  • 仅将必要的工件从构建器阶段复制到运行时阶段
  • 使用 AS 关键字指定有意义的阶段名称(例如,FROM node:18 AS builder
  • 按逻辑顺序排列阶段:依赖项 → 构建 → 测试 → 运行时

基础镜像

  • 尽可能从官方的最小基础镜像开始
  • 指定确切的版本标签以确保可重现的构建(例如,python:3.11-slim,而不仅仅是 python
  • 在适当的情况下,考虑为运行时阶段使用 distroless 镜像
  • 当与您的应用程序兼容时,使用基于 Alpine 的镜像以获得更小的占用空间
  • 确保运行时镜像具有最小必要依赖项

层优化

  • 组织命令以最大化层缓存
  • 将频繁更改的命令(如代码更改)放在不常更改的命令(如依赖项安装)之后
  • 使用 .dockerignore 防止不必要的文件包含在构建上下文中
  • 使用 && 组合相关的 RUN 命令以减少层数
  • 考虑使用 COPY –chown 一步设置权限

安全实践

  • 避免以 root 身份运行容器 – 使用 USER 指令指定非 root 用户
  • 从最终镜像中移除构建工具和不必要的软件包
  • 扫描最终镜像是否存在漏洞
  • 设置严格的文件权限
  • 使用多阶段构建,避免将构建机密包含在最终镜像中

性能考量

  • 对可能在不同环境间变化的配置使用构建参数
  • 通过按从最不频繁更改到最频繁更改的顺序排列层,来高效利用构建缓存
  • 在可能的情况下,考虑在构建步骤中实现并行化
  • 设置适当的环境变量,如 NODE_ENV=production,以优化运行时行为
  • 使用 HEALTHCHECK 指令为应用程序类型设置适当的健康检查

📄 原始文档

完整文档(英文):

https://skills.sh/github/awesome-copilot/multi-stage-dockerfile

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。