docker-extend
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDocker Extend
Docker 扩展
Sets up personal Docker tool customization using the project's gitignored override pattern.
Your and are yours — never committed to git.
Dockerfile.userdocker-compose.override.yml利用项目的git忽略覆盖模式设置个人Docker工具自定义配置。
你的和仅属于你——永远不会提交到git。
Dockerfile.userdocker-compose.override.ymlStep 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/"; fiDecision:
- → work with
DEV_MODE+Dockerfile.user(repo root)docker-compose.override.yml - → work with
DEPLOY_MODE+deploy/Dockerfile.userdeploy/docker-compose.override.yml - → ask the user which directory their
UNKNOWN_MODElives in before proceedingdocker-compose.yml
判断用户处于开发(源码构建)模式还是部署(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.userdeploy/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
undefinedOnly 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:**
```bashcp docker-compose.override.example.yml docker-compose.override.yml
**DEPLOY_MODE:**
```bashOnly 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 for tool names (space-separated, e.g., ).
$ARGUMENTSvim ripgrep jqIf tools were specified: Edit the appropriate to add (or uncomment) the block with the requested packages. Use the Edit tool — do not rewrite the entire file.
Dockerfile.userRUN apt-get installThe 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.
解析获取工具名称(以空格分隔,例如)。
$ARGUMENTSvim ripgrep jq如果指定了工具: 编辑对应的,添加(或取消注释)包含所需软件包的代码块。使用编辑工具——请勿重写整个文件。
Dockerfile.userRUN 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 -dDEPLOY_MODE:
bash
cd deploy && docker compose build && docker compose up -d向用户展示对应上下文的重新构建命令。请勿自动运行该命令。
DEV_MODE:
bash
docker compose build && docker compose up -dDEPLOY_MODE:
bash
cd deploy && docker compose build && docker compose up -dSummary
总结
Tell the user:
- Which files were created (if any)
- Which tools were added to (if any)
Dockerfile.user - The rebuild command to run when ready
- A reminder that and
Dockerfile.userare gitignored — they're personal and won't be committeddocker-compose.override.yml
告知用户:
- 已创建哪些文件(如有)
- 已向添加哪些工具(如有)
Dockerfile.user - 准备就绪时需运行的重新构建命令
- 提醒用户和
Dockerfile.user已被git忽略——它们是个人配置,不会被提交docker-compose.override.yml