# ── Étape 1 : Build du binaire Go ──────────────────────────────────────────
FROM golang:1.26-alpine AS builder

# Dépendances de compilation (git pour les modules Go)
RUN apk add --no-cache git

WORKDIR /build

# Copier les fichiers de dépendances en premier (optimise le cache Docker)
COPY go.mod go.sum ./
RUN go mod download

# Copier tout le code source
COPY . .

# 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"]
