Multi-stage Dockerfile builds the web bundle, embeds it into the static Go binary (CGO_ENABLED=0), and ships it in a minimal alpine runtime: non-root user, ca-certificates + tzdata, SQLite on a /data volume, healthcheck on /api/v1/healthz, OCI provenance labels. build-image.yml pushes to the Gitea registry on every branch push: * main -> :latest * any other branch -> :<branch-name> (sanitized to valid tag chars) * every build -> :sha-<short> (immutable, for pinning) A push to a PR branch covers the PR, so there is no separate pull_request trigger. README documents the image, tags, and a docker run / Komodo compose snippet. Modeled on mort's CI. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01JdQpdYYsTgtkJBxbcpAszi
27 lines
497 B
Plaintext
27 lines
497 B
Plaintext
# VCS / editor / docs — not needed in the image build context.
|
|
.git
|
|
.gitea
|
|
.github
|
|
.idea
|
|
.vscode
|
|
*.md
|
|
LICENSE
|
|
|
|
# Local build outputs and databases.
|
|
/pansy
|
|
*.db
|
|
*.db-wal
|
|
*.db-shm
|
|
|
|
# Frontend deps/output are rebuilt inside the image's web stage.
|
|
web/node_modules
|
|
web/dist
|
|
|
|
# The embedded web build is produced fresh in the image (web stage → embed
|
|
# directory), so never ship stale local contents. dist.go itself is kept.
|
|
internal/webdist/dist
|
|
|
|
# Assorted local scratch.
|
|
.playwright-mcp
|
|
.claude
|