vps-dependency-overview
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDependency Overview (Docker-compose monorepo)
依赖概览(Docker-compose单体仓库)
Inventory script that walks a directory of Docker-compose stacks and produces a Markdown or JSON report of:
services/- Compose images — references with tag/digest, classified by pinning quality (
image:,floating,implicit-latest,major,minor,semver,digest)custom - Build services — lines from Dockerfiles, useful for spotting outdated base images
FROM - Runtime hints — Node/Python versions inferred from ,
.nvmrc,.node-version,.python-versionengines,package.jsonpyproject.toml - Dependency manager signals — which lockfiles exist (,
pnpm-lock.yaml,package-lock.json,poetry.lock, …)uv.lock - Per-service update-check skills — if you've put deeper version-checking skills next to each service
<service>/.agents/skills/*-update-check/
It does not hit the network. It answers "what am I using?", not "what's the latest?".
这是一个清单脚本,会遍历Docker-compose栈的目录,生成Markdown或JSON格式的报告,内容包括:
services/- Compose镜像 — 引用的标签/摘要,按版本固定质量分类(
image:、floating、implicit-latest、major、minor、semver、digest)custom - 构建服务 — Dockerfile中的行,有助于发现过时的基础镜像
FROM - 运行时提示 — 从、
.nvmrc、.node-version、.python-versionengines、package.json推断出的Node/Python版本pyproject.toml - 依赖管理器信号 — 存在哪些锁文件(、
pnpm-lock.yaml、package-lock.json、poetry.lock等)uv.lock - 单服务更新检查技能 — 如果你在每个服务旁放置了更深入的版本检查技能,会显示
<service>/.agents/skills/*-update-check/
该脚本不会访问网络。它回答的是“我正在使用什么?”,而非“最新版本是什么?”。
Quick Start
快速开始
From the repo root, with (v2) available locally:
docker composebash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py \
--format markdown \
--output /tmp/dependency-overview.mdPrint to stdout instead:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --format markdownFocus on specific service folders:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --only n8n --only postgresJSON output for downstream tooling:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --format json在仓库根目录下,确保本地已安装(v2):
docker composebash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py \
--format markdown \
--output /tmp/dependency-overview.md直接输出到标准输出:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --format markdown聚焦特定服务文件夹:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --only n8n --only postgres生成JSON格式输出供下游工具使用:
bash
python3 .agents/skills/vps-dependency-overview/scripts/vps_dependency_overview.py --format jsonFlags
命令行参数
| Flag | Default | Description |
|---|---|---|
| | Workspace root |
| | Subdirectory containing per-service folders |
| | |
| stdout | Write to a file instead of stdout |
| all | Restrict to specific service folder names (repeatable) |
| 参数 | 默认值 | 描述 |
|---|---|---|
| | 工作区根目录 |
| | 包含各服务文件夹的子目录 |
| | 输出格式: |
| 标准输出 | 将结果写入文件而非标准输出 |
| 所有服务 | 限制为特定服务文件夹名称(可重复使用) |
Expected layout
预期目录结构
<root>/
<services-dir>/ # default: services/
<service-a>/
docker-compose.yml # required for the service to be inventoried
Dockerfile # optional, parsed if present
.nvmrc / .python-version / package.json / pyproject.toml # optional, parsed for runtime hints
.agents/skills/<svc>-update-check/SKILL.md # optional, surfaced in the report
<service-b>/
...A service folder without is skipped silently.
docker-compose.yml<root>/
<services-dir>/ # 默认:services/
<service-a>/
docker-compose.yml # 服务被纳入清单的必填文件
Dockerfile # 可选,若存在则会被解析
.nvmrc / .python-version / package.json / pyproject.toml # 可选,用于推断运行时提示
.agents/skills/<svc>-update-check/SKILL.md # 可选,会在报告中显示
<service-b>/
...不含的服务文件夹会被自动跳过。
docker-compose.ymlRequirements
环境要求
- Python 3.11+ (uses )
tomllib - with Compose v2 (the script invokes
dockerto resolve compose files; no images are pulled or built)docker compose -f … config --format json
- Python 3.11+(使用库)
tomllib - 带有Compose v2的(脚本会调用
docker来解析compose文件;不会拉取或构建镜像)docker compose -f … config --format json
Optional: live container versions on a remote host
可选功能:远程主机上的实时容器版本
The script reports desired versions (what the compose files say). To compare against actually running versions on a remote VPS, run separately:
bash
ssh <vps-host> "docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'"Replace with your SSH alias from .
<vps-host>~/.ssh/config脚本报告的是预期版本(compose文件中声明的版本)。如需与远程VPS上实际运行的版本对比,请单独执行以下命令:
bash
ssh <vps-host> "docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'"将替换为中的SSH别名。
<vps-host>~/.ssh/configHow to read the report
报告解读
| Pinning class | What it means | Reproducibility |
|---|---|---|
| | Best — content-addressed |
| | Good — explicit version |
| | Major+minor pinned, patches float |
| | Major pinned, minor+patch float on rebuild |
| | Bad — non-reproducible |
| no tag at all | Bad — equivalent to |
| anything else | Worth a manual look |
Runtime fields:
- /
node_container— inferred from Dockerfilepython_containerlines (the runtime your container actually runs)FROM - /
node_repo— inferred frompython_repo/.nvmrc(what dev tooling expects).python-version - /
node_engine— explicit constraints frompython_requires/package.jsonpyproject.toml
A common red flag: while means your dev environment and your container are on different majors.
node_container=18node_repo=22| 版本固定分类 | 含义 | 可复现性 |
|---|---|---|
| | 最佳——基于内容寻址 |
| | 良好——明确版本 |
| | 固定主版本+次版本,补丁版本浮动 |
| | 固定主版本,重建时次版本+补丁版本浮动 |
| | 不佳——不可复现 |
| 无标签 | 不佳——等效于 |
| 其他情况 | 需要手动检查 |
运行时字段:
- /
node_container— 从Dockerfile的python_container行推断(容器实际运行的环境)FROM - /
node_repo— 从python_repo/.nvmrc推断(开发工具预期的环境).python-version - /
node_engine— 从python_requires/package.json获取的显式约束pyproject.toml
常见风险信号:而意味着开发环境与容器运行环境的主版本不一致。
node_container=18node_repo=22