# Utiliser une image officielle de Go pour construire l'application
FROM golang:1.23-alpine AS builder

# Installer les dépendances pour PostgreSQL
RUN apk add --no-cache git

# Créer le répertoire de travail
WORKDIR /app

# Copier le module go et télécharger les dépendances
COPY go.mod go.sum ./
RUN go mod download

# Copier tout le code de l'application dans le conteneur
COPY . .

# Compiler l'application en un binaire statique
RUN go build -o app .

# Utiliser une image alpine légère pour l'exécution
FROM alpine:latest

# Installer les dépendances requises pour PostgreSQL dans le conteneur
RUN apk --no-cache add ca-certificates

# Créer le répertoire de l'application
WORKDIR /root/

# Copier le binaire compilé depuis l'image de build
COPY --from=builder /app/app .

# Exposer le port de l'application
EXPOSE 8080

# Définir la commande pour démarrer l'application
CMD ["./app"]
