SuperAPI AI 工具集

docker-containerization

部署与运维

查看项目

更新于 10-15 09:41

技能介绍

用途

本技能面向需要将应用容器化的开发与运维场景,目标是构建高效、安全的容器镜像,并通过 Docker Compose 编排多服务架构。内容覆盖 Python 与 Node.js 应用的 Dockerfile 编写、镜像优化、服务编排、健康检查与容器安全实践。

主要能力

多阶段构建

提供 Python 与 Node.js 的多阶段 Dockerfile 示例。Python 示例分为构建阶段(基于 python:3.12-slim,安装依赖到 /install)与运行阶段(复制安装产物与源码,使用 nobody 用户,暴露 8000 端口,以 uvicorn 启动)。Node.js 示例分为依赖、构建、运行三个阶段,最终镜像仅包含生产依赖与构建产物,使用 node 用户,暴露 3000 端口。

镜像优化

  • 层排序:按变更频率从低到高排列指令(系统依赖 → 语言依赖 → 应用代码)。
  • 体积缩减:Alpine/slim 基础镜像可节省 50-80%,多阶段构建节省 40-70%,pip 使用 --no-cache-dir 节省 10-20%,.dockerignore 效果视情况而定,合并 RUN 层节省 5-15%。
  • .dockerignore 示例排除 .git、.venv、pycache、.pyc、node_modules、.env、.md、tests/、docs/、.build/。

Docker Compose 编排

提供多服务架构示例,包含 api、db(postgres:16-alpine)、cache(redis:7-alpine)三个服务。api 通过环境变量连接数据库与缓存,使用 depends_on 配合健康条件,并定义 healthcheck。db 使用卷持久化数据并定义健康检查。cache 通过 command 设置内存上限与淘汰策略。

开发覆盖配置

提供 docker-compose.override.yml 示例,在开发环境自动加载:构建目标为 builder 阶段,以只读方式挂载源码,使用 --reload 启动,并设置 DEBUG=1。

健康检查

提供 Dockerfile 中的 HEALTHCHECK 指令示例,以及最小化的 /health 端点实现(返回 {"status": "ok"})。

容器安全

  • 非 root 执行:创建系统用户与用户组并以该用户运行。
  • 只读文件系统:设置 read_only: true 并通过 tmpfs 挂载 /tmp 与 /app/cache。
  • 密钥管理:通过 secrets 挂载密钥文件,并以环境变量指向密钥路径。
  • 漏洞扫描:提供 docker scout cves 与 trivy image 命令示例。

常见模式

  • 依赖等待:提供 wait-for-it 风格的 entrypoint 脚本,循环检测数据库可用后执行传入命令。
  • 构建参数:通过 ARG 传入 Python 版本、构建日期与 Git SHA,并写入镜像标签。

反模式

列出应避免的做法:以 root 运行、生产环境使用 latest 标签、在镜像中存储密钥、违反单容器单进程原则、缺少 .dockerignore、在生产镜像中安装开发依赖。

使用方式

按照文档中的 Dockerfile 与 Compose 示例编写配置,使用 docker build 构建镜像(可传入构建参数),使用 docker compose 启动多服务架构,开发环境通过 override 文件自动加载调试配置。安全方面按示例设置非 root 用户、只读文件系统与密钥挂载,并使用扫描工具检查漏洞。

适用场景

适用于 Python 或 Node.js 应用的容器化打包、多服务本地开发与部署编排、镜像体积与构建效率优化,以及容器安全加固。

限制

资料未提供具体版本兼容性说明、性能基准数据、支持的平台范围或收费信息。示例中的镜像标签与工具命令需根据实际环境调整。