首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
如何用 Docker 镜像 ghcr.io/astral-sh/ruff 在容器内执行 ruff check
📅 2026/9/11 23:24:44
✍️ 爱科研究院
👁 阅读 3,247
如何用 Docker 镜像 ghcr.io/astral-sh/ruff 在容器内执行 ruff check【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff当你想在容器环境里对 Python 代码做 lint而不是在宿主机上安装 ruff 时可以使用 Astral 官方发布的 Docker 镜像ghcr.io/astral-sh/ruff。它只包含ruff可执行文件distroless 镜像运行check后容器退出码会遵循 ruff 的约定0表示未发现违规或违规已全部自动修复1表示发现了违规2表示配置或命令行参数无效、内部错误等异常终止。镜像与可用标签镜像按每个 release 打 tag并保留latest指向最新发布。镜像基础分为几类见 docs/integrations.md默认 distroless 镜像ruff:latestruff:{major}.{minor}.{patch}如ruff:0.6.6ruff:{major}.{minor}如ruff:0.6该小版本下的最新 patch基于alpine:3.20ruff:alpine、ruff:alpine3.20基于debian:bookworm-slimruff:debian-slim、ruff:bookworm-slim基于buildpack-deps:bookwormruff:debian、ruff:bookworm非 distroless 镜像同样以版本 tag 发布格式为ruff:{major}.{minor}.{patch}-{base}和ruff:{major}.{minor}-{base}例如ruff:0.6.6-alpine。在容器内执行 ruff check官方给出的主路径命令是把当前项目目录挂载到容器内的/io然后执行check见 docs/installation.md$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check各部分的作用-v .:/io把宿主机当前目录挂载为容器内/io。ruff 镜像的构建文件 Dockerfile 中WORKDIR /io、ENTRYPOINT [/ruff]所以容器启动后 ruff 直接在项目目录上工作且镜像内所有路径都以/io为基准--rm任务结束后自动删除容器check追加在镜像名之后的参数会作为ruff的参数传入等价于在宿主机上执行ruff check。需要固定版本时给镜像加版本 tag 即可$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff:0.3.0 check在启用 SELinux 的宿主机上文档给出的替代写法是追加:Z标志让挂载目录获得正确的 SELinux 标签$ docker run -v .:/io:Z --rm ghcr.io/astral-sh/ruff check透传 ruff 的其它选项因为镜像ENTRYPOINT就是/ruffcheck之后的任意 ruff 参数都可以原样透传。常用的例如$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check --output-formatgithub .--output-format可选值包括concise、full默认、json、json-lines、junit、grouped、github、gitlab、pylint、rdjson、azure、sarif。项目使用非默认配置文件时可以用--config指向具体的 TOML 配置文件例如$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check /io --config /io/ruff.tomlruff 会识别挂载目录中的pyproject.toml、ruff.toml、.ruff.toml不带--config时按文档描述的文件发现规则定位配置见 docs/configuration.md。验证结果命令跑完后按容器退出码判断退出码0没有违规或发现的违规全部被自动修复退出码1存在违规此时终端会列出违规明细退出码2ruff 异常终止通常是配置无效、CLI 参数错误或内部错误需要先修正参数或配置再重跑。在脚本或 CI 里可以用echo $?或 shell 判断来检查退出码。另外两个影响退出码的选项见 docs/linter.md--exit-zero即使发现违规也以0退出异常终止仍为2--exit-non-zero-on-fix发现违规即以1退出即使违规已全部自动修复。在 GitLab CI 中使用该镜像docs/integrations.md 给出了用ghcr.io/astral-sh/ruff:0.16.6-alpine作为 CI 镜像、生成 GitLab codequality 报告的示例节选自文档原文.base_ruff: stage: build interruptible: true image: name: ghcr.io/astral-sh/ruff:0.16.6-alpine before_script: - cd $CI_PROJECT_DIR - ruff --version Ruff Check: extends: .base_ruff script: - ruff check --output-formatgitlab --output-filecode-quality-report.json artifacts: reports: codequality: $CI_PROJECT_DIR/code-quality-report.json注意这条路径与docker run的写法不同在 alpine 镜像内直接调用ruff工作目录由$CI_PROJECT_DIR决定并用--output-file把报告写回项目目录以便收集为 artifact。限制默认镜像是 distroless 的只含ruff二进制构建基于 Dockerfile最终阶段FROM scratch不要在容器内假设存在 shell、Python 解释器或其它工具需要基础环境时选用 alpine 或 debian 变体 tag。容器内 ruff 能看到的文件就是你挂载的内容-v .:/io只挂载当前目录跨目录的项目结构需要在挂载时自行覆盖。【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/11 23:24:44
YOLOv7+DeepSORT工业级多目标跟踪实战指南
2026/9/11 23:24:44
ego-lite:让 AI Agent 免费共享登录态的浏览器完整上手指南
2026/9/11 23:24:44
Serverless Framework 如何启用内置 Python 依赖打包并配置 dockerizePip 跨平台编译?
2026/9/12 0:04:46
【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)
2026/9/12 0:04:46
【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)
2026/9/12 0:04:46
MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现
2026/9/12 0:04:46
鸿蒙ArkUI组件:Slider与Progress开发实战指南
2026/9/12 0:04:46
Label Studio Interfaces 全指南:用 React 构建自定义标注界面的架构、开发流程与安全模型
2026/9/11 23:59:46
SUMO合流区仿真全攻略:从路网建模到瓶颈识别与参数标定
2026/9/12 0:04:46
Label Studio Interfaces 全指南:用 React 构建自定义标注界面的架构、开发流程与安全模型
2026/9/12 0:04:46
鸿蒙ArkUI组件:Slider与Progress开发实战指南
2026/9/12 0:04:46
MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现
2026/9/11 5:40:15
超人会飞不算本事:系统稳定依赖清晰规则与边界设计
2026/9/11 8:29:24
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
2026/9/11 9:11:20
基于CNN的调制信号识别:MATLAB实现时频图分类实战