FROM node:20-alpine AS base_image RUN npm install -g npm@10.8.2 FROM base_image AS build_base WORKDIR /app RUN apk update # needed packages to build dependencies from source 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 # run aws cli without mounting secret, because CI already has AWS credentials FROM build_base AS ci_image RUN aws codeartifact login --tool npm --namespace @dadosfera --repository dadosfera-npm --domain dadosfera --domain-owner 611330257153 --region us-east-1 RUN npm ci --ignore-scripts COPY . . # unit test specific build FROM ci_image AS test ENV DUC_URL=0.0.0.0:50051 ENTRYPOINT ["npm", "run", "test"] # dev build FROM build_base AS dev 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 # flag --build-from-source is required to force-build sqlite3 RUN npm ci --ignore-scripts COPY . . ENTRYPOINT npm run start:dev FROM ci_image AS prod_build RUN npm run build FROM base_image WORKDIR /app COPY --from=prod_build /app/dist ./dist COPY --from=prod_build /app/node_modules ./node_modules COPY --from=prod_build /app/package*.json ./ RUN apk update # needed packages to build dependencies from source 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