Docker Extend 用于扩展 Docker、个性化 Docker 环境,以及设置用户专属的 Docker 定制。它采用项目中被 git 忽略的覆盖模式,让 Dockerfile.user 与 docker-compose.override.yml 成为用户个人文件,永远不会提交到 git。
用途
当用户希望为 Docker 环境添加自定义工具、进行个性化配置或设置用户专属定制时使用。该技能会检测当前运行上下文,并据此管理对应的用户级配置文件。
主要能力
- 检测上下文:判断用户处于开发(源码构建)还是部署(GHCR)模式。检测命令会检查根目录下是否存在 docker-compose.yml 且包含 build: .(DEV_MODE),或是否存在 deploy/docker-compose.yml(DEPLOY_MODE),否则为 UNKNOWN_MODE。
- 检查当前状态:DEV_MODE 下检查根目录的 Dockerfile.user 与 docker-compose.override.yml;DEPLOY_MODE 下检查 deploy/ 目录下的同名文件。若两个文件都已存在,则跳到添加工具步骤;若文件缺失,则从示例复制;若示例文件也缺失,则告知用户项目尚未添加示例文件,需联系维护者或查阅文档。
- 复制示例文件:仅为缺失的文件执行复制命令,不覆盖已有文件。DEV_MODE 使用 cp Dockerfile.user.example Dockerfile.user 与 cp docker-compose.override.example.yml docker-compose.override.yml;DEPLOY_MODE 使用对应的 deploy/ 路径复制命令。
- 添加工具:解析 $ARGUMENTS 中的工具名(空格分隔,例如 vim ripgrep jq)。若指定了工具,则编辑相应的 Dockerfile.user,添加(或取消注释)RUN apt-get install 块,使用 Edit 工具而非重写整个文件。若未指定工具,则展示文件并询问用户想添加哪些工具。
使用方式
在 Dockerfile.user 中添加或修改的块形如:
RUN apt-get update && apt-get install -y --no-install-recommends
<tool1>
<tool2>
&& rm -rf /var/lib/apt/lists/*
完成后展示重建命令,但不自动运行:
- DEV_MODE:docker compose build && docker compose up -d
- DEPLOY_MODE:cd deploy && docker compose build && docker compose up -d
限制
- 若处于 UNKNOWN_MODE,需先询问用户 docker-compose.yml 所在目录再继续。
- 若项目尚未提供示例文件,无法自动创建,需用户联系维护者或查阅文档。
- Dockerfile.user 与 docker-compose.override.yml 被 gitignore,属个人配置,不会被提交。
- 技能不会自动执行重建命令,需用户自行运行。