用途
该技能用于指导编写符合最佳实践的 Dockerfile 与 Docker Compose 配置,目标是构建更小、更安全、更易维护的容器镜像。内容以可直接参考的代码示例和检查清单形式组织,适合在容器化 Node.js、Python 等应用时使用。
主要能力
多阶段构建
提供 Node.js 多阶段构建示例,将依赖安装(deps)、构建(build)与运行时(runtime)拆分为独立阶段,最终阶段只复制 node_modules、dist 与 package.json 等运行时产物。示例中创建了非 root 用户 appuser 并通过 USER 指令切换,暴露 3000 端口,定义了 HEALTHCHECK(每 30 秒探测 /healthz),并以 node dist/server.js 启动。
同时提供 Python 多阶段构建示例:在 builder 阶段用 python:3.12-slim 创建虚拟环境并安装 requirements.txt,运行阶段复制该虚拟环境,创建 appuser 用户,使用 gunicorn 以 4 个 worker 绑定 0.0.0.0:8000 启动。
Docker Compose 模式
给出包含 api、db、cache 三个服务的 Compose 配置示例:api 通过 build.target 指定 runtime 阶段,设置环境变量(DATABASE_URL、REDIS_URL),使用 depends_on 配合 service_healthy / service_started 条件控制启动顺序,配置 restart: unless-stopped 与内存限制 512M;db 使用 postgres:16-alpine 并挂载 pgdata 卷,定义 pg_isready 健康检查;cache 使用 redis:7-alpine 并设置 maxmemory 与淘汰策略。
镜像优化
提供镜像体积与分层分析命令:docker history --human --no-trunc、dive,以及多架构构建命令 docker buildx build --platform linux/amd64,linux/arm64。建议合并 RUN 命令以减少层数,并按变更频率从低到高排列指令以提升缓存效率。
安全与反模式
列出常见反模式:容器内以 root 运行、在 COPY 足够时使用 ADD、在 Dockerfile 环境变量中存放密钥、不固定基础镜像版本(如 FROM node:latest)、缺少 .dockerignore 导致构建上下文过大、在生产镜像中安装开发依赖。
检查清单
提供可勾选清单:多阶段构建分离构建与运行阶段、创建并使用非 root 用户、基础镜像固定版本、.dockerignore 排除 .git/node_modules/.env、定义 HEALTHCHECK、生产镜像不含构建工具与开发依赖、Compose 使用带健康条件的 depends_on、密钥通过 build secrets 或运行时挂载而非 Dockerfile 中的 ENV 传递。
使用方式
资料以 Dockerfile、Compose YAML、.dockerignore 与命令行示例呈现,可直接参考这些片段编写或改造自己的容器配置。具体安装命令、集成方式与调用步骤暂未提供。
适用场景
适用于需要容器化 Node.js 或 Python 应用、优化镜像体积、加固容器安全、规范 Compose 编排的工程场景。
限制
资料未说明该技能的安装方式、运行环境要求、支持的 Docker 版本、许可协议或收费情况,这些信息暂未提供。示例主要覆盖 Node.js 与 Python,其他语言栈未涉及。