feat: make supervisor base image configurable via build ARG
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 84/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- docker
- 领域
- build-system, devops
调研方向
首先比较 deploy/docker/Dockerfile.supervisor 和 deploy/docker/Dockerfile.gateway,并阅读 architecture/build.md 中关于基础镜像的文档。添加 supervisor 覆盖项,并将当前固定的镜像用作默认值,然后分别在有覆盖项和没有覆盖项的情况下构建,以检查默认行为和可配置性。完成标准是文档涵盖这两个覆盖项,且默认值保持不变。
由索引模型根据 Issue 内容生成。
描述
User Story
As an operator or downstream packager deploying OpenShell's supervisor container in an environment with specific registry-trust, compliance, or support constraints (e.g. a registry allowlist, a FIPS-validated base image requirement, or an internal support SLA tied to a specific image vendor), I want to override the supervisor's base image at build time, so that I can satisfy my environment's constraints without forking the Dockerfile.
Problem Statement
deploy/docker/Dockerfile.gateway already exposes its base image as a build ARG:
ARG GATEWAY_BASE_IMAGE=gcr.io/distroless/cc-debian13:nonroot@sha256:54df941ed0d06a1bd95ef5e0ce391fd8d9f94b64782dc9a60062727849ee3f97
FROM ${GATEWAY_BASE_IMAGE} AS gateway
deploy/docker/Dockerfile.supervisor does not. It hardcodes:
FROM gcr.io/distroless/base-nossl-debian13@sha256:af5cb8dd589b8520b8c06bebb9efb73d7e16406cab58e85c51761fff49d370a0 AS supervisor
There is no equivalent override point, so substituting an alternate base image for the supervisor today requires forking/patching the Dockerfile.
Impact / Why This Matters
Downstream consumers building in a registry-restricted environment, needing a FIPS-validated base, or needing a base image they can patch/support on their own schedule currently have to maintain a forked Dockerfile to get a different supervisor base image. A fork drifts from upstream over time (missed binary/build-step changes) and duplicates this maintenance burden across every downstream consumer who needs it. The gateway already solves this cleanly; the supervisor's inconsistency with that pattern is the actual gap, not a missing capability invented from scratch.
Proposed Design
Add a build ARG to deploy/docker/Dockerfile.supervisor (e.g. SUPERVISOR_BASE_IMAGE) defaulting to the current pinned image/digest, mirroring GATEWAY_BASE_IMAGE's existing pattern. This is purely additive: no default behavior change, and no change to published images unless a builder explicitly overrides the ARG. Exact ARG naming/defaulting mechanics are left to the implementing PR.
Acceptance Criteria
-
deploy/docker/Dockerfile.supervisoraccepts a build ARG for its base image, with the current image pinned as the default. - Building without overriding the ARG produces the same image as today (no default-behavior change).
- Wherever the gateway's
GATEWAY_BASE_IMAGEoverride is documented (e.g.architecture/build.md) is updated to document the supervisor's new equivalent consistently.
Alternatives Considered
- Status quo (hardcoded base, consumers fork the Dockerfile if they need something else) — rejected: duplicates maintenance effort per downstream consumer and drifts from upstream over time.
- Change the default base image itself (e.g. to Red Hat's Project Hummingbird
registry.access.redhat.com/hi/core-runtime) — rejected for now: a direct comparison (skopeo inspectagainst both) shows Hummingbird'score-runtimeimage is larger and has more layers than the current default (12.82 MB / 23 layers vs. the current base's 5.94 MB / 14 layers), and its image config setsCMD ["/bin/bash"], suggesting a shell may be present where the current distroless base has none. It is not a demonstrated improvement, and changing the project's default base is a larger decision needing broader maintainer alignment, not a mechanical change. - Make the sandbox image configurable the same way (
deploy/docker/Dockerfile.sandbox,FROM scratch) — rejected: the sandbox image has no runtime base to swap, it's a bare static binary with no base at all, so this axis doesn't apply there.
Agent Investigation
Confirmed by reading the current Dockerfiles directly and inspecting published images/registries with skopeo inspect:
deploy/docker/Dockerfile.gatewayalready has theGATEWAY_BASE_IMAGEARG described above.deploy/docker/Dockerfile.supervisorhas no equivalent ARG.deploy/docker/Dockerfile.sandboxisFROM scratchwith no base image to parameterize.- Published
ghcr.io/nvidia/openshell/supervisor:devis 15 layers / ~19.6 MB total; its base (distroless/base-nossl-debian13) is 14 layers / ~5.94 MB. registry.access.redhat.com/hi/core-runtime:latest(Project Hummingbird's comparable minimal base) is 23 layers / ~12.82 MB, with image configCMD ["/bin/bash"].
No RFC needed — this is a small, additive, non-breaking build-configuration change, not a change to OpenShell's architecture or default behavior.
- 主要语言
- Rust
- 星标
- 13.2k
- 派生
- 1.6k
- 平均合并
- 1 天 19 小时
- 30 天内合并 PR
- 330
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NVIDIA/OpenShell 的其他 Issue
-
bug(driver-mxc): test helper fails to compile after gateway-name argument可能已有人在做 @feloy 今天认领。 未关闭state:triage-needed
难度 1/5 1 小时以内 新手友好度 88/100
维护者通常 1 天内回复
-
bug: install.sh ignores XDG_CONFIG_HOME for the local gateway config可能已有人在做 @fede-kamel 于 4 天前认领。 未关闭area:cli os:linux os:macos state:validated
难度 2/5 1-3 小时 新手友好度 88/100
NVIDIA/OpenShell#4042 · 2 条评论 ·
维护者通常 1 天内回复
-
state:triage-needed
难度 2/5 1-3 小时 新手友好度 72/100
NVIDIA/OpenShell#3995 · 2 条评论 ·
维护者通常 1 天内回复
-
OCSF shorthand renders Unknown and Other severities as [INFO]可能已有人在做 @ericcurtin 于 5 天前认领。 未关闭state:triage-needed
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
docs(runtimes): driver TOML examples omit [openshell] version = 2 and fail preflight可能已有人在做 @fede-kamel 于 6 天前认领。 未关闭state:triage-needed
难度 1/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复
相似的 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 78/100
zcashlabs/thus-spoke-zakura#153 ·
维护者通常 1 天内回复
-
app bug windows-os
难度 2/5 1-3 小时 新手友好度 67/100
维护者通常 1 天内回复
-
editor good first issue
难度 2/5 1-3 小时 新手友好度 65/100
funnyboy-roks/inq#54 ·
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddings可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug llm translation
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复