docker-extend

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Docker Extend

Docker 扩展

Sets up personal Docker tool customization using the project's gitignored override pattern. Your
Dockerfile.user
and
docker-compose.override.yml
are yours — never committed to git.
利用项目的git忽略覆盖模式设置个人Docker工具自定义配置。 你的
Dockerfile.user
docker-compose.override.yml
仅属于你——永远不会提交到git。

Step 1: Detect Context

步骤1:检测环境上下文

Determine if the user is in dev (source build) or deploy (GHCR) mode:
!
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
Decision:
  • DEV_MODE
    → work with
    Dockerfile.user
    +
    docker-compose.override.yml
    (repo root)
  • DEPLOY_MODE
    → work with
    deploy/Dockerfile.user
    +
    deploy/docker-compose.override.yml
  • UNKNOWN_MODE
    → ask the user which directory their
    docker-compose.yml
    lives in before proceeding
判断用户处于开发(源码构建)模式还是部署(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
    所在的目录

Step 2: Check Current State

步骤2:检查当前状态

DEV_MODE — check root files:
!
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 — check deploy/ files:
!
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)")
If both files already exist: Skip to Step 4 (add tools). If files are missing: Proceed to Step 3 (copy from examples). If example files are missing too: Tell the user the project hasn't added the example files yet and to check with the maintainers or the docs.
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(从示例文件复制)。 如果示例文件也缺失: 告知用户项目尚未添加示例文件,请联系维护人员或查看文档。

Step 3: Copy Example Files

步骤3:复制示例文件

Run only the copy commands for whichever files are missing. Do NOT overwrite existing files.
DEV_MODE:
bash
undefined
仅针对缺失的文件运行复制命令。请勿覆盖现有文件。
DEV_MODE:
bash
undefined

Only if Dockerfile.user does not exist:

Only if Dockerfile.user does not exist:

cp Dockerfile.user.example Dockerfile.user
cp Dockerfile.user.example Dockerfile.user

Only if docker-compose.override.yml does not exist:

Only if docker-compose.override.yml does not exist:

cp docker-compose.override.example.yml docker-compose.override.yml

**DEPLOY_MODE:**

```bash
cp docker-compose.override.example.yml docker-compose.override.yml

**DEPLOY_MODE:**

```bash

Only if deploy/Dockerfile.user does not exist:

Only if deploy/Dockerfile.user does not exist:

cp deploy/Dockerfile.user.example deploy/Dockerfile.user
cp deploy/Dockerfile.user.example deploy/Dockerfile.user

Only if deploy/docker-compose.override.yml does not exist:

Only if deploy/docker-compose.override.yml does not exist:

cp deploy/docker-compose.override.example.yml deploy/docker-compose.override.yml

After running the copy commands, confirm to the user which files were created.
cp deploy/docker-compose.override.example.yml deploy/docker-compose.override.yml

运行复制命令后,向用户确认已创建哪些文件。

Step 4: Add Tools

步骤4:添加工具

Parse
$ARGUMENTS
for tool names (space-separated, e.g.,
vim ripgrep jq
).
If tools were specified: Edit the appropriate
Dockerfile.user
to add (or uncomment) the
RUN apt-get install
block with the requested packages. Use the Edit tool — do not rewrite the entire file.
The block to add/modify:
dockerfile
RUN apt-get update && apt-get install -y --no-install-recommends \
    <tool1> \
    <tool2> \
 && rm -rf /var/lib/apt/lists/*
If no tools were specified: Show the user the file and ask which tools they want to add. Then edit the file accordingly.
解析
$ARGUMENTS
获取工具名称(以空格分隔,例如
vim ripgrep jq
)。
如果指定了工具: 编辑对应的
Dockerfile.user
,添加(或取消注释)包含所需软件包的
RUN apt-get install
代码块。使用编辑工具——请勿重写整个文件。
需添加/修改的代码块:
dockerfile
RUN apt-get update && apt-get install -y --no-install-recommends \
    <tool1> \
    <tool2> \
 && rm -rf /var/lib/apt/lists/*
如果未指定工具: 向用户展示文件并询问他们想要添加哪些工具,然后相应编辑文件。

Step 5: Rebuild

步骤5:重新构建

Show the user the rebuild command for their context. Do NOT run it automatically.
DEV_MODE:
bash
docker compose build && docker compose up -d
DEPLOY_MODE:
bash
cd deploy && docker compose build && docker compose up -d
向用户展示对应上下文的重新构建命令。请勿自动运行该命令。
DEV_MODE:
bash
docker compose build && docker compose up -d
DEPLOY_MODE:
bash
cd deploy && docker compose build && docker compose up -d

Summary

总结

Tell the user:
  1. Which files were created (if any)
  2. Which tools were added to
    Dockerfile.user
    (if any)
  3. The rebuild command to run when ready
  4. A reminder that
    Dockerfile.user
    and
    docker-compose.override.yml
    are gitignored — they're personal and won't be committed
告知用户:
  1. 已创建哪些文件(如有)
  2. 已向
    Dockerfile.user
    添加哪些工具(如有)
  3. 准备就绪时需运行的重新构建命令
  4. 提醒用户
    Dockerfile.user
    docker-compose.override.yml
    已被git忽略——它们是个人配置,不会被提交