core/backend/Dockerfile
enzo dcf3b937fa revert: supprimer les dépendances externes viewLogs/viewServices du CORE
Le CORE est autonome — les modules externes ne doivent pas être
des dépendances Go compilées dans le binaire. Retour au Dockerfile
et docker-compose.yml originaux (context: ./backend).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 16:05:11 +01:00

48 lines
1.5 KiB
Docker

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