-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Labels
ai-taskAI-generated taskAI-generated task
Description
Summary
Add Docker containerization and automated container image publishing via GitHub Actions to ghcr.io.
Acceptance Criteria
Files to Create
.dockerignore- Exclude build artifacts, node_modules, .git, docs, editor configsdocker/nginx.conf.template- Nginx config with:- Port 8080 (non-privileged)
- SPA routing (
try_files) - API reverse proxy to
${API_BACKEND_URL}(defaulthttp://localhost:8443) - Cache headers (immutable for hashed assets, no-cache for index.html)
- Gzip compression
Dockerfile- Multi-stage build:- Stage 1: node:22-alpine, npm ci, npm run build
- Stage 2: nginx:alpine, serve static files (~45-55 MB final image)
.github/workflows/container-release.yml- GitHub Actions workflow:- Triggers: push to main, v* tags
- Build & push to ghcr.io/killrvideo/killrvideo-react-frontend
- Tags: latest + sha on main, semver on v* tags
Verification
-
docker build -t killrvideo-frontend:local .builds successfully - SPA routing works (non-root paths return 200 with index.html)
-
/assets/*hasCache-Control: public, immutable -
index.htmlhasCache-Control: no-cache - Final image is ~45-55 MB
- GitHub Actions workflow triggers on push to main
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ai-taskAI-generated taskAI-generated task