# ── Étape 1 : Build du binaire Go ────────────────────────────────────────── # Build context = core/backend/ (pas besoin du répertoire parent) # Les modules viewLogs et viewServices sont clonés depuis Forgejo pendant le build. FROM golang:1.26-alpine AS builder RUN apk add --no-cache git ca-certificates # Cloner les modules dans la même arborescence que les replace directives go.mod # go.mod: replace ../../viewLogs → depuis /workspace/core/backend/ = /workspace/viewLogs ✓ RUN git clone https://git.geronzi.fr/proxmoxPanel/viewLogs /workspace/viewLogs RUN git clone https://git.geronzi.fr/proxmoxPanel/viewServices /workspace/viewServices WORKDIR /workspace/core/backend # Copier les fichiers de dépendances (optimise le cache Docker) COPY go.mod go.sum ./ # Copier tout le code source du CORE COPY . . # Télécharger les dépendances RUN go mod download # Compiler le binaire de façon statique # -ldflags="-s -w" : supprime les infos de debug pour réduire la taille RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -ldflags="-s -w" -o /bin/proxmoxpanel ./ # ── Étape 2 : Image finale minimale ──────────────────────────────────────── FROM alpine:3.20 # Certificats CA pour les requêtes HTTPS vers l'API Proxmox RUN apk add --no-cache ca-certificates tzdata # Créer un utilisateur non-root pour la sécurité RUN addgroup -g 1001 pxp && adduser -u 1001 -G pxp -s /bin/sh -D pxp WORKDIR /app # Copier le binaire compilé COPY --from=builder /bin/proxmoxpanel /app/proxmoxpanel # Créer les répertoires de données avec les bonnes permissions RUN mkdir -p /app/data && chown -R pxp:pxp /app USER pxp # Port d'écoute du backend EXPOSE 3001 # Variables d'environnement par défaut ENV DATA_DIR=/app/data \ LISTEN_ADDR=:3001 \ APP_ENV=production CMD ["/app/proxmoxpanel"]