mcpField
D
docker-containerization

docker-containerization

github.com/ailabs-393云与 DevOps4601.1k 次安装50 周前更新
代码仓库

关于 docker-containerization

面向 Next.js 和 Node.js 项目的 Docker 容器化技能,可生成不同环境的配置、管理脚本和部署指南,涵盖从本地开发到多种编排平台的流程。

主要功能

  1. 01生成生产、开发和静态站点 Dockerfile
  2. 02提供 Docker Compose 配置
  3. 03构建、运行、推送和清理脚本
  4. 04提供 Nginx 配置与 .dockerignore
  5. 05涵盖多种平台的部署指南

适用场景

  1. 01为 Next.js 应用准备生产容器
  2. 02使用 Docker Compose 配置本地开发
  3. 03将容器部署到 Kubernetes 或云平台

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ailabs-393/ai-labs-claude-skills --skill docker-containerization

安装后在 Claude Code 中输入/docker-containerization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

index.js
package.json
assets/
.dockerignore
docker-compose.yml
Dockerfile.development
Dockerfile.nginx
Dockerfile.production
nginx.conf
references/
container-orchestration.md
docker-best-practices.md
scripts/
docker-build.sh
docker-cleanup.sh
docker-push.sh
docker-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 应用进行生产环境容器化”

步骤:

  1. 将 assets/Dockerfile.production 复制到项目根目录,并命名为 Dockerfile
  2. 将 assets/.dockerignore 复制到项目根目录
  3. 构建:./docker-build.sh -e prod -n my-app -t v1.0.0
  4. 测试:./docker-run.sh -i my-app -t v1.0.0 -p 3000:3000 -d
  5. 推送:./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app
示例 2:使用 Docker Compose 进行开发

用户:“为本地开发配置 Docker Compose”

步骤:

  1. 将 assets/Dockerfile.development 和 assets/docker-compose.yml 复制到项目中
  2. 自定义 docker-compose.yml 中的服务
  3. 启动:docker-compose up -d
  4. 查看日志:docker-compose logs -f app-dev
示例 3:部署到 Kubernetes

用户:“将我的容器化应用部署到 Kubernetes”

步骤:

  1. 构建镜像并推送到镜像仓库
  2. 查看 references/container-orchestration.md 中的 Kubernetes 部分
  3. 创建 K8s 清单(deployment、service、ingress)
  4. 应用:kubectl apply -f deployment.yaml
  5. 验证:kubectl get pods && kubectl logs -f deployment/app
示例 4:部署到 AWS ECS

用户:“部署到 AWS ECS Fargate”

步骤:

  1. 构建镜像并推送到 ECR
  2. 查看 references/container-orchestration.md 中的 ECS 部分
  3. 创建任务定义 JSON
  4. 注册:aws ecs register-task-definition --cli-input-json file://task-def.json
  5. 创建服务: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 - 多阶段生产环境 Dockerfile
  • Dockerfile.development - 开发环境 Dockerfile
  • Dockerfile.nginx - 使用 Nginx 的静态导出
  • docker-compose.yml - 多容器编排
  • .dockerignore - 优化的排除规则
  • nginx.conf - 生产环境 Nginx 配置

评论

支持 Markdown