Publish Web/PWA Docker image #247
Labels
No labels
abandoned
active
audit
blocked
data-safety
difficulty:easy
difficulty:hard
difficulty:high
difficulty:medium
docs
done
duplicate
notebook-v0
open
priority:high
ready
release-critical
safe-mode
spec
spec-backlog
subsystem:api
subsystem:backlog
subsystem:bases
subsystem:ci
subsystem:command
subsystem:configuration
subsystem:consolidate
subsystem:dependencies
subsystem:desktop-electron
subsystem:diffmerge
subsystem:docker
subsystem:docs
subsystem:fuzzy
subsystem:graph
subsystem:hotkeys
subsystem:lapis
subsystem:maint
subsystem:maintenance
subsystem:markdown
subsystem:markdown-lint
subsystem:md018
subsystem:notebook
subsystem:notifications
subsystem:opfs
subsystem:package
subsystem:plugin-markdown
subsystem:plugin-tasks
subsystem:plugins
subsystem:registry
subsystem:release
subsystem:renovate
subsystem:restore
subsystem:scripts
subsystem:search
subsystem:settings
subsystem:spec
subsystem:tasks
subsystem:testing
subsystem:ui
subsystem:web
subsystem:workspace
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lapis-notes/lapis#247
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add a Forgejo publishing path for the installable Web/PWA host as a Docker Hub
image.
Problem
The Web/PWA package can be built as static content, but the repo does not yet
publish a deployable container image for hosting that build. Deployments need a
repeatable image with the same cross-origin isolation headers required by the
browser-local SQLite runtime.
Goal
Publish
lapisnotes/webto Docker Hub with both a short commit tag andlatest, using a hardened static-content runtime.Scope
docker/web/.mainpushes andmanual dispatch.
web and release-management specs.
Non-goals
Acceptance Criteria
docker/web/Dockerfilebuilds@lapis-notes/webfrom the repo root andproduces a distroless, nonroot Caddy runtime listening on port
8080.missing built assets, required COOP/COEP headers, and conservative cache and
hardening headers.
.forgejo/workflows/publish-web.ymlpusheslapisnotes/web:${GITHUB_SHA:0:12}and
lapisnotes/web:latestto Docker Hub formainand manual runs, usingDOCKERHUB_USERNAMEandDOCKERHUB_TOKEN.Implementation Notes
.forgejo/workflows/publish-lapis-ci.ymlbuildx pattern forDocker checks, QEMU/binfmt, builder setup, and multi-arch push.
caddy:2.11.3-alpineas the Caddy source stage andgcr.io/distroless/static-debian12:nonrootfor the runtime.LAPIS_BUILD_COMMITthrough the Docker build so the app build records thesource commit.
Suggested Files or Specs To Inspect
spec/src/20-packages/web/index.mdpackages/web/spec.mdspec/src/80-maintenance/release-management.md.forgejo/workflows/publish-lapis-ci.ymlpackages/web/package.jsonValidation Commands
pnpm build:webdocker buildx build --platform linux/amd64 --file docker/web/Dockerfile --build-arg LAPIS_BUILD_COMMIT=<sha> --tag lapisnotes/web:test --load .docker run --rm --read-only --cap-drop=ALL --security-opt no-new-privileges -p 8080:8080 lapisnotes/web:testcurl -I http://localhost:8080/curl -I 'http://localhost:8080/open?url=test'curl -I http://localhost:8080/sw.jscurl -I http://localhost:8080/assets/missing.jspnpm check:allmake spec-lintmdbook build specRelated Issues
Follow-up Tasks
Implementation Summary
Added the Web/PWA Docker image definition, distroless Caddy runtime config, Docker Hub publish workflow, and matching web/release specs. Validated pnpm build:web, pnpm check:all, make spec-lint, and mdbook build spec; local Docker image build/run checks were blocked because no Docker daemon was available.