Go: store, auth, weather und config sind eigene Pakete unter internal/. Vorher lagen fuenf Dateien in einem Topf, und jede kannte jede. Web: os.js hatte 1425 Zeilen und alles darin. Jetzt core.js (Zustand, Server, Einstellungen), glyphs.js (die Pixelraster), js/widgets/ mit einem Widget je Datei, os.js nur noch die Ansichten. Stylesheet nach css/. Die HoneyBar bleibt eine einzelne Datei ohne Importe — sie wird von fremden Seiten mit einer Zeile eingebunden, da darf nichts nachladen. Nebenbei: Das gebaute Binary lag mit 9,8 MB im Repo und ist jetzt ignoriert. Und der Test gegen eine zweite Versionsnummer geht nicht mehr auf os.js, sondern durch alle .js — sonst haette ihn dieser Umbau still ausgehebelt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.0 KiB
Docker
33 lines
1.0 KiB
Docker
# HoneyOS — ein Binary, die Oberfläche steckt per embed mit drin.
|
|
|
|
FROM golang:1.23-alpine AS build
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY *.go ./
|
|
COPY internal/ ./internal/
|
|
COPY web/ ./web/
|
|
RUN CGO_ENABLED=0 go build -buildvcs=false -ldflags="-s -w" -o /honeyos .
|
|
|
|
FROM alpine:3.20
|
|
LABEL org.opencontainers.image.title="HoneyOS" \
|
|
org.opencontainers.image.description="Retro-Schreibtisch und Umschalter für die eigenen Apps" \
|
|
org.opencontainers.image.source="https://gitea.honeyy.duckdns.org/Docker/HoneyOS"
|
|
|
|
# ca-certificates: ohne die scheitert die Anfrage an den OIDC-Anbieter über https.
|
|
RUN apk add --no-cache ca-certificates wget && \
|
|
adduser -D -u 1000 honeyos && \
|
|
mkdir -p /data && chown honeyos:honeyos /data
|
|
|
|
COPY --from=build /honeyos /usr/local/bin/honeyos
|
|
|
|
USER honeyos
|
|
VOLUME /data
|
|
EXPOSE 8080
|
|
ENV HONEYOS_ADDR=:8080 HONEYOS_DATA_DIR=/data
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
|
CMD wget -qO- http://127.0.0.1:8080/healthz || exit 1
|
|
|
|
ENTRYPOINT ["/usr/local/bin/honeyos"]
|