Document design choices and standardize Dockerfile

This commit is contained in:
mixeme
2026-06-15 00:05:12 +03:00
parent 59718e21b4
commit 47e2ba7272
14 changed files with 292 additions and 24 deletions
+31
View File
@@ -0,0 +1,31 @@
FROM golang:1.22-bookworm
# Fyne links against native desktop libraries, so the container must include a C
# compiler plus OpenGL/X11 headers. --no-install-recommends keeps the image from
# pulling in unrelated desktop packages that are not needed for compilation.
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
gcc \
libgl1-mesa-dev \
xorg-dev && \
rm -rf /var/lib/apt/lists/*
WORKDIR /src
# Copy module files first so Docker can cache downloaded dependencies while the
# application source changes. This makes repeated local builds much faster.
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# CGO is required by Fyne. The first Linux package target is linux/amd64; other
# architectures can be added later as separate, explicit build targets.
ENV CGO_ENABLED=1
ENV GOOS=linux
ENV GOARCH=amd64
# -trimpath removes host paths from the binary, and -s -w strips symbol/debug
# tables to keep the produced desktop executable smaller.
RUN go build -trimpath -ldflags "-s -w" -o /out/pysentry ./cmd/pysentry