ARG BASE_IMAGE=node:22.23.4-alpine@sha256:fe4f6d74e20370acb04ad889077d14d0f64a9c8ea6a42bc60cddf1e844699914 FROM ${BASE_IMAGE} AS build WORKDIR /app RUN apk add --no-cache openssl COPY package*.json ./ RUN npm ci COPY prisma ./prisma RUN npx prisma generate COPY tsconfig.json ./ COPY src ./src RUN npm run build FROM build AS test COPY scripts ./scripts COPY examples ./examples COPY docker-compose.yml .env.example Dockerfile ./ CMD ["npm", "test"] FROM ${BASE_IMAGE} AS runner ARG VCS_REF=0000000000000000000000000000000000000000 LABEL org.opencontainers.image.revision=${VCS_REF} WORKDIR /app ENV NODE_ENV=production RUN apk add --no-cache openssl COPY package*.json ./ RUN npm ci --omit=dev COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma COPY --from=build /app/node_modules/@prisma/client ./node_modules/@prisma/client COPY --from=build /app/dist ./dist COPY prisma ./prisma RUN mkdir -p /app/data EXPOSE 3088 CMD ["sh", "-c", "npx prisma migrate deploy && node dist/index.js"]