FROM node:22-alpine AS base_image RUN npm install -g npm@latest FROM base_image AS build_base WORKDIR /app RUN apk update RUN apk add --no-cache \ aws-cli \ chromium \ nss \ freetype \ harfbuzz \ ca-certificates \ ttf-freefont COPY package*.json ./ ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser # Local build with secrets # Check if local protospack tarball exists (for local dev) FROM build_base AS build COPY protospack*.tgz* ./ RUN --mount=type=secret,id=aws,target=/root/.aws/credentials \ aws codeartifact login --tool npm --namespace @dadosfera --repository dadosfera-npm --domain dadosfera --domain-owner 611330257153 --region us-east-1 RUN if [ -f "protospack.tgz" ]; then \ echo "Installing from local protospack tarball..." && \ npm install ./protospack.tgz --save-exact && \ npm ci --ignore-scripts && \ npm rebuild; \ else \ echo "Installing from CodeArtifact..." && \ npm ci; \ fi COPY . . RUN npm run build FROM base_image WORKDIR /app COPY --from=build /app/dist ./dist COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/package*.json ./ RUN apk update RUN apk add --no-cache \ chromium \ nss \ freetype \ harfbuzz \ ca-certificates \ ttf-freefont ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ENTRYPOINT ["npm", "run", "start:prod"]