# syntax=docker/dockerfile:1.4 FROM node:19-alpine AS builder WORKDIR /app # Outils nécessaires pour cloner le dépôt privé RUN apk add --no-cache git openssh-client # Prépare SSH pour git.4nkweb.com RUN mkdir -p /root/.ssh && \ ssh-keyscan git.4nkweb.com >> /root/.ssh/known_hosts # Clone le SDK à côté de /app afin que ../sdk-signer-client soit disponible RUN --mount=type=ssh git clone -b dev4 \ ssh://git@git.4nkweb.com/4nk/sdk-signer-client.git /sdk-signer-client # Build de la dépendance SDK WORKDIR /sdk-signer-client RUN npm ci && npm run build # Installation des dépendances de l'app WORKDIR /app COPY package*.json ./ RUN npm install # Copie et build des sources de l'app COPY tsconfig.json ./ COPY src ./src RUN npm run build # Réduction aux deps de production RUN npm prune --omit=dev && npm cache clean --force FROM node:19-alpine WORKDIR /app # Création d'un utilisateur non-root RUN adduser -D appuser --uid 10000 && \ chown -R appuser /app USER appuser # Copie des artefacts de build et des deps prod COPY --from=builder --chown=appuser:appuser /app/package*.json ./ COPY --from=builder --chown=appuser:appuser /app/node_modules ./node_modules COPY --from=builder --chown=appuser:appuser /app/dist ./dist COPY --from=builder /sdk-signer-client /sdk-signer-client EXPOSE 8080 CMD ["npm", "start"]