FROM node:18-alpine

# Dependances de compilation pour sharp (traitement d'images)
RUN apk add --no-cache python3 make g++ vips-dev

# ⚠ POLICES - indispensables au rendu des apercus de parcelle.
# L'image Alpine n'en embarque AUCUNE (verifie : /usr/share/fonts est vide), or
# `parcelle_preview` convertit un SVG en PNG avec sharp : sans police, tous les
# textes de l'image (references cadastrales, echelle, legendes) sortaient en
# carres vides - les fameux « tofu ». DejaVu couvre le latin, Noto complete les
# symboles ; fontconfig est ce qui permet a la bibliotheque de les trouver.
RUN apk add --no-cache fontconfig ttf-dejavu font-noto && fc-cache -f

WORKDIR /app

# Copy package files
COPY package*.json ./

# Install all dependencies (ignore prepare script, we'll build manually after copying src)
RUN npm ci --ignore-scripts

# Copy source code
COPY src ./src
COPY tsconfig.json ./

# Build TypeScript
RUN npm run build

# Remove dev dependencies after build
RUN npm prune --production

# Set production environment
ENV NODE_ENV=production
ENV MCP_TRANSPORT=http
ENV PORT=3000

# Expose MCP port
EXPOSE 3000

# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

# Run the server
CMD ["node", "build/index.js"]
