检查 docker-compose.yml 文件的安全问题、最佳实践和端口冲突
docker-compose-linter.是一项面向实际任务的技能,主要用于A纯 Python 3 (仅限Stdlib) linter for docker-compose.yml 文件..;Commands.commands.command.;
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。结果生成后应检查内容的完整性、准确性、一致性和可用性,必要时抽样复核并根据反馈调整配置;涉及外部服务、账号凭据、个人信息或敏感数据时,还需遵守相应的权限、安全与合规要求。
一款纯 Python 3(仅使用标准库)的 docker-compose.yml 文件校验工具。
python3 scripts/docker-compose-linter.py[options] FILE
| 命令 | 描述 |
|---|---|
lint |
对 docker-compose.yml 进行问题校验 |
services |
列出所有服务及其镜像(image)或构建配置(build) |
ports |
列出所有端口映射,并检测端口冲突 |
audit |
完整审计(包含 lint + services + ports 汇总) |
| 选项 | 描述 |
|---|---|
--format text|json|markdown |
输出格式(默认为 text) |
--strict |
遇到任意问题(不仅限于 error 级别)即退出并返回状态码 1 |
--ignore RULE |
忽略指定规则(可重复使用) |
--min-severity error|warning|info |
报告的最低严重级别(默认为 info) |
| 规则 | 严重级别 | 描述 |
|---|---|---|
no-version |
info | 缺失或过时的 version: 字段 |
no-healthcheck |
warning | 服务未定义 healthcheck |
no-restart-policy |
warning | 服务未设置重启策略(restart policy) |
privileged-mode |
error | 服务以特权模式(privileged mode)运行 |
port-conflict |
error | 多个服务映射到同一宿主机端口 |
host-network |
warning | 使用 network_mode: host(存在安全风险) |
latest-tag |
warning | 镜像使用了 :latest 标签,或未指定任何标签 |
no-resource-limits |
info | 未设置内存/CPU 限制(deploy.resources) |
hardcoded-env |
warning | 敏感信息(如密钥、密码)直接写入 environment 变量中 |
root-user |
warning | 未指定 user: 字段(默认以 root 用户运行) |
missing-depends-on |
info | 服务使用了 links,但未声明 depends_on |
bind-mount-relative |
info | 使用了相对路径的绑定挂载(bind mount) |
no-logging |
info | 未配置日志(logging)参数 |
duplicate-service |
error | 存在重复的服务名称 |
# 使用默认文本格式进行校验 python3 scripts/docker-compose-linter.py lint docker-compose.yml # 仅显示 warning 及以上级别问题 python3 scripts/docker-compose-linter.py --min-severity warning lint docker-compose.yml # 输出 JSON 格式,适用于 CI 流水线 python3 scripts/docker-compose-linter.py --format json lint docker-compose.yml # 以 Markdown 格式输出完整审计结果 python3 scripts/docker-compose-linter.py --format markdown audit docker-compose.yml # 忽略特定规则 python3 scripts/docker-compose-linter.py --ignore root-user --ignore no-logging lint docker-compose.yml # 启用严格模式:遇到任意问题即退出并返回状态码 1 python3 scripts/docker-compose-linter.py --strict lint docker-compose.yml