- Linktree-style homepage with photo, social links, and self-hosted services (container registry, Git server) - Registry pages rendered on demand from Harbor via a live content collection, cached in memory (60s fresh, 10min stale-while-revalidate) - Pinned registry images (PINNED_IMAGES) shown first with a star - Node standalone server with security headers; self-contained server build so the Docker image ships no node_modules - Gitea workflow building multi-arch images for Flux Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# Registry pages are rendered on request from live Harbor data (cached ~1 min),
|
||||
# so publishing a new image needs no rebuild. Rebuild only after code changes:
|
||||
# docker compose up -d --build
|
||||
# Config comes from .env (see .env.example).
|
||||
|
||||
services:
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
SITE_URL: ${SITE_URL:-}
|
||||
image: homepage:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${PORT:-8080}:8080"
|
||||
environment:
|
||||
HARBOR_URL: ${HARBOR_URL:?set HARBOR_URL in .env}
|
||||
HARBOR_REGISTRY_HOST: ${HARBOR_REGISTRY_HOST:-}
|
||||
HARBOR_PROJECTS: ${HARBOR_PROJECTS:-}
|
||||
HARBOR_USERNAME: ${HARBOR_USERNAME:-}
|
||||
# Only needed for non-public projects; empty is fine.
|
||||
HARBOR_PASSWORD: ${HARBOR_PASSWORD:-}
|
||||
read_only: true
|
||||
tmpfs:
|
||||
- /tmp
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8080/"]
|
||||
interval: 30s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
Reference in New Issue
Block a user