feat: Archivum skeleton — Go/GraphQL backend + Vue 3 PWA frontend
Full project scaffold: multi-stage Dockerfile (ARM64/AMD64), AsciiDoc↔TipTap bridge, Setup Wizard, CodeMirror source editor, Git-backed storage layer, LDAP+JWT auth skeleton, Tailwind mobile-first layout, and VS Code build/push tasks targeting registry at 192.168.0.19:5000. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
42
docker/Dockerfile
Normal file
42
docker/Dockerfile
Normal file
@@ -0,0 +1,42 @@
|
||||
# ── Stage 1: Build frontend ───────────────────────────────────────────────────
|
||||
FROM node:20-alpine AS frontend-builder
|
||||
|
||||
WORKDIR /app/frontend
|
||||
COPY frontend/package*.json ./
|
||||
RUN npm ci
|
||||
COPY frontend/ ./
|
||||
RUN npm run build
|
||||
|
||||
# ── Stage 2: Build backend ────────────────────────────────────────────────────
|
||||
FROM golang:1.22-alpine AS backend-builder
|
||||
|
||||
WORKDIR /app/backend
|
||||
COPY backend/go.mod backend/go.sum ./
|
||||
RUN go mod download
|
||||
COPY backend/ ./
|
||||
# CGO disabled — pure Go SQLite (modernc.org/sqlite).
|
||||
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /archivum ./cmd/server
|
||||
|
||||
# ── Stage 3: Runtime image ────────────────────────────────────────────────────
|
||||
FROM alpine:3.20
|
||||
|
||||
# Allow PUID/PGID override at runtime.
|
||||
ARG PUID=1000
|
||||
ARG PGID=1000
|
||||
|
||||
RUN addgroup -g "${PGID}" archivum \
|
||||
&& adduser -u "${PUID}" -G archivum -s /sbin/nologin -D archivum
|
||||
|
||||
# Embed frontend into the binary's working directory.
|
||||
COPY --from=frontend-builder /app/frontend/dist /srv/archivum/ui
|
||||
COPY --from=backend-builder /archivum /usr/local/bin/archivum
|
||||
|
||||
# Volumes: config and data live outside the image.
|
||||
VOLUME ["/config", "/data"]
|
||||
|
||||
ENV DOCKER_PATH=/config
|
||||
|
||||
USER archivum
|
||||
EXPOSE 4000
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/archivum"]
|
||||
Reference in New Issue
Block a user