# ── Étape 1 : Build du binaire Go ────────────────────────────────────────── # Build context = proxmoxPanel/ (parent de core/) FROM golang:1.26-alpine AS builder # Dépendances de compilation (git pour les modules Go) RUN apk add --no-cache git WORKDIR /workspace # Copier les sources des trois modules COPY core/backend/ ./core/backend/ COPY viewLogs/ ./viewLogs/ COPY viewServices/ ./viewServices/ WORKDIR /workspace/core/backend # 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"]