bd561d9a5e
- Fail hard on critical migration errors (ignore only "already exists") - Cache SSH user keys with 30s TTL (avoid DB query per auth attempt) - Configure DB connection pooling (25 open, 5 idle, 5m lifetime) - Enable SQLite WAL mode for concurrent read/write - Optimize check history pruning (only prune above 1100 rows) - Add security headers: X-Content-Type-Options, X-Frame-Options, CSP, Referrer-Policy - Add CORS policy on /status/json via UPTOP_CORS_ORIGIN env var - Add HTTP request logging middleware (method, path, status, duration, IP) - Fix config file permissions from 0644 to 0600 - Pin Docker images: golang:1.24-alpine3.21, alpine:3.21 - Fix Docker CI tag pattern for CalVer (was semver) - Pass build args (VERSION, COMMIT, BUILD_DATE) to Docker build
31 lines
822 B
Docker
31 lines
822 B
Docker
# --- Stage 1: Builder ---
|
|
FROM golang:1.24-alpine3.21 AS builder
|
|
RUN apk add --no-cache gcc musl-dev
|
|
WORKDIR /app
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
ENV CGO_ENABLED=1
|
|
ARG VERSION=dev
|
|
ARG COMMIT=none
|
|
ARG BUILD_DATE=unknown
|
|
RUN go build -ldflags="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT} -X main.date=${BUILD_DATE}" -o uptop ./cmd/uptop/main.go
|
|
|
|
# --- Stage 2: Runner ---
|
|
FROM alpine:3.21
|
|
WORKDIR /app
|
|
RUN apk add --no-cache ca-certificates openssh-client
|
|
RUN mkdir /data
|
|
|
|
COPY --from=builder /app/uptop .
|
|
|
|
# Set Default Configuration via ENV
|
|
# Docker users can override these in docker-compose.yml
|
|
ENV LIPGLOSS_RENDERER_HAS_DARK_BACKGROUND=true
|
|
ENV UPTOP_DB_TYPE=sqlite
|
|
ENV UPTOP_DB_DSN=/data/uptop.db
|
|
ENV UPTOP_KEYS=/data/authorized_keys
|
|
ENV UPTOP_PORT=23234
|
|
|
|
EXPOSE 23234
|
|
CMD ["./uptop"] |