创新方案
用 Docker 容器化 Web…
为 Next.js/React/Node.js 应用生成 Dockerfile、docker-compose、管理脚本及多平台部署配置。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 Docker 容器化 Web 应用时通用
解决思路
- 按环境选择 Dockerfile:开发用 Dockerfile.development(热重载、含全部依赖),生产用 Dockerfile.production(多阶段构建、Alpine 基础镜像、非 root 用户、健康检查、资源限制),静态导出用 Dockerfile.nginx(Nginx 反向代理、体积最小)。
- 单容器只生成 Dockerfile;多容器(应用+数据库、微服务)生成 docker-compose.yml,配置网络、卷、健康检查、日志与重启策略。
- 复制 assets/Dockerfile.production 到项目根目录并重命名为 Dockerfile,同时复制 assets/.dockerignore 排除 node_modules、.git、日志等文件。
- 用 docker-build.sh 构建镜像:./docker-build.sh -e prod -t v1.0.0;可选 -n 指定名称、--no-cache、--platform linux/amd64。
- 用 docker-run.sh 运行容器:./docker-run.sh -i my-app -t v1.0.0 -d;可指定端口映射 -p 8080:3000 和 --env-file .env.production。
- 用 docker-push.sh 推送到镜像仓库:./docker-push.sh -n my-app -t v1.0.0 --repo username/my-app;支持 -r gcr.io/project 指定仓库及 --also-tag stable 附加标签。
- 用 docker-cleanup.sh 清理磁盘:先用 --all --dry-run 预览,再执行 --all;或用 --containers --images 选择性清理。
- 配置 nginx.conf:启用压缩、缓存与安全响应头。
- 按部署平台查阅 references/container-orchestration.md:Docker Compose(本地)、Kubernetes(企业级自动扩缩容)、Amazon ECS(AWS 原生)、Google Cloud Run(无服务器容器)、Azure Container Instances、Digital Ocean App Platform。
- Kubernetes 部署:构建并推送镜像后,创建 deployment、service、ingress 清单,执行 kubectl apply -f deployment.yaml,用 kubectl get pods && kubectl logs -f deployment/app 验证。
- AWS ECS 部署:构建并推送到 ECR,创建 task definition 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 并行构建、设置资源限制、启用压缩。
- 可维护性实践:为复杂步骤加注释、用 build arguments 提升灵活性、保持 Dockerfile DRY、所有配置纳入版本控制、记录环境变量。
- 排查问题:镜像过大(>500MB)用多阶段构建、Alpine 基础镜像和完善 .dockerignore;构建慢则优化层缓存、用 BuildKit、检查依赖;容器立即退出用 docker logs container-name 查日志并核对 CMD/ENTRYPOINT 与端口冲突;改动不生效则无缓存重建、检查 .dockerignore 与卷挂载。
- 集成 CI/CD:GitHub Actions 中 chmod +x docker-build.sh docker-push.sh 后依次执行构建与推送(用 ${{ github.sha }} 作标签);GitLab CI 中 chmod +x docker-build.sh 后执行 ./docker-build.sh -e prod -t $CI_COMMIT_SHA。
- 常用命令:构建 ./docker-build.sh -e prod -t latest;运行 ./docker-run.sh -i app -t latest -d;日志 docker logs -f app;进入容器 docker exec -it app sh;清理 ./docker-cleanup.sh --all --dry-run 预览后执行 --all。