- go.mod/go.sum : require + replace pour viewLogs et viewServices (chemins locaux) - main.go : enregistrement loader.RegisterModule(viewlogs.New()) + viewservices.New() - Dockerfile : build context parent proxmoxPanel/ pour accéder aux 3 repos - docker-compose.yml : context: .. + dockerfile: core/backend/Dockerfile - nginx.conf : locations /viewLogs/ et /viewServices/ proxyfiées vers backend:3001 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.6 KiB
Docker
52 lines
1.6 KiB
Docker
# ── É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"]
|