# Bridge service — multi-stage build
# Image finale : node 22 alpine, ~80 Mo

ARG NODE_VERSION=22-alpine

# --- Stage 1 : deps ---
FROM node:${NODE_VERSION} AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --only=production && npm cache clean --force

# --- Stage 2 : build ---
FROM node:${NODE_VERSION} AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY tsconfig.json ./
COPY src ./src
RUN npm run build

# --- Stage 3 : runtime ---
FROM node:${NODE_VERSION} AS runtime
WORKDIR /app

# Non-root user
RUN addgroup -g 1001 -S bridge && adduser -S bridge -u 1001
USER bridge

COPY --from=deps --chown=bridge:bridge /app/node_modules ./node_modules
COPY --from=build --chown=bridge:bridge /app/dist ./dist
COPY --chown=bridge:bridge package.json ./

ENV NODE_ENV=production
ENV PORT=4000
EXPOSE 4000

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget --quiet --tries=1 --spider http://localhost:4000/api/health || exit 1

CMD ["node", "dist/index.js"]
