关于 docker-extend
此 Skill 用于在项目的 Docker 配置中添加个人工具,且不提交自定义文件。它会识别源码构建或部署模式、准备忽略文件,并给出相应的重建命令。
主要功能
- 01识别开发或部署模式
- 02从示例创建缺失文件
- 03添加指定的 apt 软件包
- 04提供对应模式的重建命令
- 05个人覆盖文件不提交到版本库
适用场景
- 01为源码构建的 Docker 镜像添加工具
- 02自定义部署用 Docker 镜像
- 03编辑个人 Docker 覆盖配置后重建
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ coleam00/ archon --skill docker-extend安装后在 Claude Code 中输入/docker-extend确认已加载。
详细介绍
Docker 扩展
使用项目的 Git 忽略覆盖模式设置个人 Docker 工具自定义配置。
Dockerfile.user 和 docker-compose.override.yml 属于你个人所有 — 永远不会提交到 git。
第 1 步:检测上下文
确定用户处于开发(从源代码构建)还是部署(GHCR)模式:
!if [ -f docker-compose.yml ] && grep -q 'build: \.' docker-compose.yml 2>/dev/null; then echo "DEV_MODE: Building from source (root docker-compose.yml)"; elif [ -f deploy/docker-compose.yml ]; then echo "DEPLOY_MODE: Using GHCR image (deploy/docker-compose.yml)"; else echo "UNKNOWN_MODE: No docker-compose.yml found in root or deploy/"; fi
决策:
DEV_MODE→ 使用Dockerfile.user+docker-compose.override.yml(仓库根目录)DEPLOY_MODE→ 使用deploy/Dockerfile.user+deploy/docker-compose.override.ymlUNKNOWN_MODE→ 继续之前,询问用户其docker-compose.yml所在的目录
第 2 步:检查当前状态
DEV_MODE — 检查根目录文件:
!echo "=== Dockerfile.user ===" && (cat Dockerfile.user 2>/dev/null || echo "(not found — will create from example)") && echo "" && echo "=== docker-compose.override.yml ===" && (cat docker-compose.override.yml 2>/dev/null || echo "(not found — will create from example)")
DEPLOY_MODE — 检查 deploy/ 文件:
!echo "=== deploy/Dockerfile.user ===" && (cat deploy/Dockerfile.user 2>/dev/null || echo "(not found — will create from example)") && echo "" && echo "=== deploy/docker-compose.override.yml ===" && (cat deploy/docker-compose.override.yml 2>/dev/null || echo "(not found — will create from example)")
如果两个文件都已存在: 跳到第 4 步(添加工具)。 如果有文件缺失: 继续第 3 步(从示例复制)。 如果示例文件也缺失: 告知用户项目尚未添加示例文件,请联系维护人员或查阅文档。
第 3 步:复制示例文件
只运行缺失文件对应的复制命令。切勿覆盖现有文件。
DEV_MODE:
# Only if Dockerfile.user does not exist:
cp Dockerfile.user.example Dockerfile.user
# Only if docker-compose.override.yml does not exist:
cp docker-compose.override.example.yml docker-compose.override.yml
DEPLOY_MODE:
# Only if deploy/Dockerfile.user does not exist:
cp deploy/Dockerfile.user.example deploy/Dockerfile.user
# Only if deploy/docker-compose.override.yml does not exist:
cp deploy/docker-compose.override.example.yml deploy/docker-compose.override.yml
运行复制命令后,向用户确认创建了哪些文件。
第 4 步:添加工具
解析 $ARGUMENTS 中的工具名称(以空格分隔,例如 vim ripgrep jq)。
如果指定了工具: 编辑相应的 Dockerfile.user,添加(或取消注释)包含所需软件包的 RUN apt-get install 代码块。使用 Edit 工具 — 不要重写整个文件。
要添加或修改的代码块:
RUN apt-get update && apt-get install -y --no-install-recommends \
<tool1> \
<tool2> \
&& rm -rf /var/lib/apt/lists/*
如果未指定工具: 向用户显示文件并询问他们想添加哪些工具。然后相应地编辑文件。
第 5 步:重新构建
向用户显示其上下文对应的重新构建命令。不要自动运行。
DEV_MODE:
docker compose build && docker compose up -d
DEPLOY_MODE:
cd deploy && docker compose build && docker compose up -d
总结
告知用户:
- 创建了哪些文件(如果有)
- 在
Dockerfile.user中添加了哪些工具(如果有) - 准备就绪后要运行的重新构建命令
- 提醒用户,
Dockerfile.user和docker-compose.override.yml已被 git 忽略 — 它们是个人文件,不会被提交