SuperAPI AI 工具集

devcontainer-helper

编程与开发

查看项目

更新于 10-15 21:49

技能介绍

用途:当用户需要创建、配置、更新或解释 devcontainer.json 或开发容器环境时使用本技能。

主要能力:先确认需求,包括基础环境(预构建镜像如 Ubuntu、Python、Node,或自定义 Dockerfile,或 docker-compose.yml)、所需语言与工具、VS Code 扩展和需要转发的端口;再以 assets/devcontainer-template.json 为起点生成配置:镜像方式用 image 属性并配合 features 添加工具,Dockerfile 方式用 build.dockerfile,Compose 方式用 dockerComposeFile 与 service。

架构原则:数据库、缓存、消息代理等外部服务优先用 docker-compose.yml 中的 sidecar 服务,而不是在容器内安装;需要外部服务时也优先 sidecar 而非 Docker-in-Docker,以降低开销并避免特权容器的安全复杂性。

常用 Features:Node.js(ghcr.io/devcontainers/features/node:1,建议用带版本标签如 version: "22")、Playwright(ghcr.io/devcontainers/features/playwright:1)、pnpm(ghcr.io/devcontainers-contrib/features/pnpm:2)、Docker-in-Docker(ghcr.io/devcontainers/features/docker-in-docker:2)、Git(ghcr.io/devcontainers/features/git:1)。官方建议尽量用 Features 替代手写 Dockerfile 命令,以获得可维护性与 Dependabot 支持。

性能优化:可把全局工具安装(如 npm install -g cli-tool)从 postCreateCommand 移到自定义 Dockerfile,使工具烘焙进镜像层,加快日常容器启动。

生命周期脚本:语言运行时和系统工具优先用 Features 以获自动更新;postCreateCommand 等生命周期脚本只用于项目本地初始化,如 pnpm install 或数据库迁移。卷权限问题优先用专门 feature 或 remoteUser,而非脚本中手动 chown。

自动化:使用 Features 时建议把 devcontainers 加入 .github/dependabot.yml 以保持环境自动更新。更多属性与取值见 references/cheatsheet.md。限制:具体价格、平台支持与未提及的效果暂未提供。