关于 docker-containerization
面向 Next.js 和 Node.js 项目的 Docker 容器化技能,可生成不同环境的配置、管理脚本和部署指南,涵盖从本地开发到多种编排平台的流程。
主要功能
- 01生成生产、开发和静态站点 Dockerfile
- 02提供 Docker Compose 配置
- 03构建、运行、推送和清理脚本
- 04提供 Nginx 配置与 .dockerignore
- 05涵盖多种平台的部署指南
适用场景
- 01为 Next.js 应用准备生产容器
- 02使用 Docker Compose 配置本地开发
- 03将容器部署到 Kubernetes 或云平台
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ailabs-393/ ai-labs-claude-skills --skill docker-containerization安装后在 Claude Code 中输入/docker-containerization确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
index.jspackage.jsonassets/.dockerignoredocker-compose.ymlDockerfile.developmentDockerfile.nginxDockerfile.productionnginx.confreferences/container-orchestration.mddocker-best-practices.mdscripts/docker-build.shdocker-cleanup.shdocker-push.shdocker-run.sh详细介绍
Docker 容器化技能
概述
为现代 Web 应用生成可用于生产环境的 Docker 配置,尤其适用于 Next.js 和 Node.js 项目。此技能提供 Dockerfile、docker-compose 配置、用于容器管理的 bash 脚本,以及针对各种编排平台的全面部署指南。
核心功能
1. Dockerfile 生成
为不同环境创建优化的 Dockerfile:
生产环境(assets/Dockerfile.production):
- 多阶段构建,将镜像体积缩小 85%
- Alpine Linux 基础镜像(最终镜像约 180MB)
- 以非 root 用户身份运行,提升安全性
- 健康检查和资源限制
开发环境(assets/Dockerfile.development):
- 支持热重载
- 包含所有开发依赖
- 挂载卷以实时更新代码
Nginx 静态部署(assets/Dockerfile.nginx):
- 优化静态导出
- 内置 Nginx 反向代理
- 尽可能减小占用空间
2. Docker Compose 配置
使用 assets/docker-compose.yml 进行多容器编排:
- 开发和生产服务
- 网络和卷管理
- 健康检查和日志记录
- 重启策略
3. 用于容器管理的 Bash 脚本
docker-build.sh - 使用全面的选项构建镜像:
./docker-build.sh -e prod -t v1.0.0
./docker-build.sh -n my-app --no-cache --platform linux/amd64
docker-run.sh - 使用完整配置运行容器:
./docker-run.sh -i my-app -t v1.0.0 -d
./docker-run.sh -p 8080:3000 --env-file .env.production
docker-push.sh - 推送到镜像仓库(Docker Hub、ECR、GCR、ACR):
./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app
./docker-push.sh -r gcr.io/project --repo my-app --also-tag stable
docker-cleanup.sh - 释放磁盘空间:
./docker-cleanup.sh --all --dry-run # Preview cleanup
./docker-cleanup.sh --containers --images # Clean specific resources
4. 配置文件
.dockerignore:排除不需要的文件(node_modules、.git、日志)nginx.conf:适用于生产环境的 Nginx 配置,包含压缩、缓存和安全标头
5. 参考文档
docker-best-practices.md 涵盖:
- 多阶段构建说明
- 镜像优化技术(将体积缩小 50-85%)
- 安全最佳实践(非 root 用户、漏洞扫描)
- 性能优化
- 健康检查和日志记录
- 故障排除指南
container-orchestration.md 涵盖以下部署方式:
- Docker Compose(本地开发)
- Kubernetes(支持自动扩缩容的企业级部署)
- Amazon ECS(AWS 原生编排)
- Google Cloud Run(无服务器容器)
- Azure Container Instances
- Digital Ocean App Platform
包含配置示例、命令、自动扩缩容设置和监控。
工作流决策树
1. 使用什么环境?
- 开发环境 →
Dockerfile.development(热重载、包含所有依赖) - 生产环境 →
Dockerfile.production(精简、安全、优化) - 静态导出 →
Dockerfile.nginx(占用空间最小)
2. 使用单容器还是多容器?
- 单容器 → 仅生成 Dockerfile
- 多容器 → 生成
docker-compose.yml(应用 + 数据库、微服务)
3. 使用哪个镜像仓库?
- Docker Hub →
docker.io/username/image - AWS ECR →
123456789012.dkr.ecr.region.amazonaws.com/image - Google GCR →
gcr.io/project-id/image - Azure ACR →
registry.azurecr.io/image
4. 使用哪个部署平台?
- Kubernetes → 参阅
references/container-orchestration.md中的 K8s 部分 - ECS → 参阅 ECS 任务定义示例
- Cloud Run → 参阅部署命令
- Docker Compose → 使用提供的 compose 文件
5. 需要哪些优化?
- 镜像体积 → 多阶段构建、Alpine 基础镜像
- 构建速度 → 层缓存、BuildKit
- 安全性 → 非 root 用户、漏洞扫描
- 性能 → 资源限制、健康检查
使用示例
示例 1:为生产环境容器化 Next.js 应用
用户:“为我的 Next.js 应用进行生产环境容器化”
步骤:
- 将
assets/Dockerfile.production复制到项目根目录,并命名为Dockerfile - 将
assets/.dockerignore复制到项目根目录 - 构建:
./docker-build.sh -e prod -n my-app -t v1.0.0 - 测试:
./docker-run.sh -i my-app -t v1.0.0 -p 3000:3000 -d - 推送:
./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app
示例 2:使用 Docker Compose 进行开发
用户:“为本地开发配置 Docker Compose”
步骤:
- 将
assets/Dockerfile.development和assets/docker-compose.yml复制到项目中 - 自定义 docker-compose.yml 中的服务
- 启动:
docker-compose up -d - 查看日志:
docker-compose logs -f app-dev
示例 3:部署到 Kubernetes
用户:“将我的容器化应用部署到 Kubernetes”
步骤:
- 构建镜像并推送到镜像仓库
- 查看
references/container-orchestration.md中的 Kubernetes 部分 - 创建 K8s 清单(deployment、service、ingress)
- 应用:
kubectl apply -f deployment.yaml - 验证:
kubectl get pods && kubectl logs -f deployment/app
示例 4:部署到 AWS ECS
用户:“部署到 AWS ECS Fargate”
步骤:
- 构建镜像并推送到 ECR
- 查看
references/container-orchestration.md中的 ECS 部分 - 创建任务定义 JSON
- 注册:
aws ecs register-task-definition --cli-input-json file://task-def.json - 创建服务:
aws ecs create-service --cluster my-cluster --service-name app --desired-count 3
最佳实践
安全
✅ 在生产环境中使用多阶段构建
✅ 以非 root 用户身份运行
✅ 使用指定的镜像标签(而非 latest)
✅ 扫描漏洞
✅ 切勿硬编码密钥
✅ 实施运行状况检查
性能
✅ 优化层缓存顺序 ✅ 使用 Alpine 镜像(体积约小 85%) ✅ 启用 BuildKit 以并行构建 ✅ 设置资源限制 ✅ 使用压缩
可维护性
✅ 为复杂步骤添加注释 ✅ 使用构建参数提高灵活性 ✅ 保持 Dockerfile 简洁不重复 ✅ 对所有配置进行版本控制 ✅ 记录环境变量
故障排除
镜像过大(>500MB) → 使用多阶段构建、Alpine 基础镜像和完整的 .dockerignore
构建速度慢 → 优化层缓存、使用 BuildKit、检查依赖项
容器立即退出
→ 查看日志:docker logs container-name
→ 验证 CMD/ENTRYPOINT,检查端口冲突
更改未生效 → 不使用缓存重新构建,检查 .dockerignore,验证卷挂载
快速参考
# Build
./docker-build.sh -e prod -t latest
# Run
./docker-run.sh -i app -t latest -d
# Logs
docker logs -f app
# Execute
docker exec -it app sh
# Cleanup
./docker-cleanup.sh --all --dry-run # Preview
./docker-cleanup.sh --all # Execute
与 CI/CD 集成
GitHub Actions
- run: |
chmod +x docker-build.sh docker-push.sh
./docker-build.sh -e prod -t ${{ github.sha }}
./docker-push.sh -n app -t ${{ github.sha }} --repo username/app
GitLab CI
build:
script:
- chmod +x docker-build.sh
- ./docker-build.sh -e prod -t $CI_COMMIT_SHA
资源
脚本(scripts/)
具备丰富功能的生产就绪 bash 脚本:
docker-build.sh- 构建镜像(400 多行,彩色输出)docker-run.sh- 运行容器(400 多行,自动解决冲突)docker-push.sh- 推送到镜像仓库(支持多个镜像仓库)docker-cleanup.sh- 清理资源(试运行模式,选择性清理)
参考文档(references/)
按需加载的详细文档:
docker-best-practices.md- 全面的 Docker 最佳实践(约 500 行)container-orchestration.md- 6 个以上平台的部署指南(约 600 行)
资源文件(assets/)
可直接使用的模板:
Dockerfile.production- 多阶段生产环境 DockerfileDockerfile.development- 开发环境 DockerfileDockerfile.nginx- 使用 Nginx 的静态导出docker-compose.yml- 多容器编排.dockerignore- 优化的排除规则nginx.conf- 生产环境 Nginx 配置