core/backend/Dockerfile
enzo 4b1a0a09a8 fix: Dockerfile auto-suffisant — clone viewLogs/viewServices depuis Forgejo
Supprime la dépendance au contexte parent (context: ..).
Le Dockerfile clone viewLogs et viewServices depuis git pendant le build,
dans /workspace/ pour correspondre aux replace directives go.mod (../../).
docker-compose.yml revient à context: ./backend — fonctionne quelle que
soit la structure de répertoires sur le serveur.

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

56 lines
2 KiB
Docker

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