feat(web): package the sandbox dashboard as a static nginx container - #295
Merged
Conversation
Serve the SPA from a multi-stage image: a node build stage produces the bundle and a non-root nginx-unprivileged runtime serves it on 8080 with a single-page-app fallback so client routes resolve on refresh. The config disables the version banner, gzips text assets, caches fingerprinted assets immutably and keeps index.html uncached. A docker-compose web service serves it alongside the backend, and the web CI workflow builds the image, asserts it runs non-root, smoke-tests the served page and a client route, and scans it with Trivy. Nothing is pushed or deployed. The Helm chart is tracked as a follow-up. Closes #290
The nginx-unprivileged base ships libcrypto3/libssl3 3.3.3-r0, which Trivy flags for the CVE-2026-31789 heap overflow (fixed in 3.3.7-r0). Upgrade the two packages in a transient root layer, then drop back to the non-root uid the image runs as. Part of #290
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
E-08 Sandbox UI #290 (F-08.10) - container packaging for the dashboard.
What
Scope
Container + compose + CI validation + README. The full Helm chart (deploy/helm/web) is a focused follow-up (#290b), mirroring the #289 split.
Gate chain
Docker is not buildable locally (WSL); the CI docker job is the validation gate.
Closes #290