# syntax=docker/dockerfile:1.4 FROM node:19-alpine AS builder WORKDIR /app # Outils nécessaires pour cloner le dépôt RUN apk add --no-cache git # Clone le SDK à côté de /app afin que ../sdk-signer-client soit disponible RUN git clone -b ext \ https://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 # Installation des dépendances nécessaires RUN apk update && apk upgrade && apk add --no-cache \ docker-cli \ git \ curl \ wget \ jq \ busybox-extras \ npm \ coreutils \ build-base \ autoconf \ automake \ libtool \ pkgconfig \ cmake \ ninja \ clang \ lldb \ lld \ make \ tree \ ncdu \ mc \ ctags \ vim \ emacs \ sed \ gawk \ iputils \ net-tools \ iproute2 \ python3 \ python3-dev \ py3-pip \ go \ rust \ cargo \ && npm install -g wscat # Création d'un utilisateur non-root RUN adduser -D appuser --uid 10000 && \ chown -R appuser /app # Retour à l'utilisateur appuser 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"]