mcpField
D
docker-extend

docker-extend

github.com/coleam00云与 DevOps23.8k278 次安装今天更新
代码仓库

关于 docker-extend

此 Skill 用于在项目的 Docker 配置中添加个人工具,且不提交自定义文件。它会识别源码构建或部署模式、准备忽略文件,并给出相应的重建命令。

主要功能

  1. 01识别开发或部署模式
  2. 02从示例创建缺失文件
  3. 03添加指定的 apt 软件包
  4. 04提供对应模式的重建命令
  5. 05个人覆盖文件不提交到版本库

适用场景

  1. 01为源码构建的 Docker 镜像添加工具
  2. 02自定义部署用 Docker 镜像
  3. 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.yml
  • UNKNOWN_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

总结

告知用户:

  1. 创建了哪些文件(如果有)
  2. 在 Dockerfile.user 中添加了哪些工具(如果有)
  3. 准备就绪后要运行的重新构建命令
  4. 提醒用户,Dockerfile.user 和 docker-compose.override.yml 已被 git 忽略 — 它们是个人文件,不会被提交

评论

支持 Markdown