# ===================================
#       PHASE 1 - BUILDER
# ===================================

FROM node:17.4.0-alpine

ENV NODE_OPTIONS=--max_old_space_size=8192

# Because ALPINE base image don't have python pre-installed 
RUN apk update && apk add bash curl python3 make g++ && rm -rf /var/cache/apk/*

# install node-prune (https://github.com/tj/node-prune)
# RUN curl -sfL https://install.goreleaser.com/github.com/tj/node-prune.sh | bash -s -- -b /usr/local/bin
RUN curl -sf https://gobinaries.com/tj/node-prune | sh

WORKDIR /usr/app

# remove unneccessary packages
COPY ./tools/remove-package-not-using ./tools/remove-package-not-using
RUN cd ./tools/remove-package-not-using && npm install && npm run build
# RUN cd /usr/app

# Base dependencies
COPY package.json .
COPY turbo.json .
COPY .yarnrc.yaml .

COPY ./apps/diginest/package.json ./apps/diginest/package.json

# packages
COPY ./packages ./packages

RUN rm -rf ./node_modules ./yarn.lock ./package-lock.json ./yarn.lock* ./.yarn ./**/node_modules ./**/.turbo

RUN echo "" >> yarn.lock

# install the packages & dependencies
RUN yarn set version berry

RUN yarn install

# Start building
RUN yarn build:diginest

# ===================================
#       PHASE 2 - RUNNER
# ===================================

FROM node:17.4.0-alpine AS RUNNER

WORKDIR /usr/app

# Don't run production as root
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
USER nextjs

COPY --from=BUILD_IMAGE --chown=nextjs:nodejs /usr/app/apps/diginest/dist ./dist
COPY --from=BUILD_IMAGE --chown=nextjs:nodejs /usr/app/apps/diginest/storage ./storage
COPY --from=BUILD_IMAGE --chown=nextjs:nodejs /usr/app/node_modules ./node_modules
COPY --from=BUILD_IMAGE --chown=nextjs:nodejs /usr/app/apps/diginest/.env .

EXPOSE 3000 80 4000

CMD node dist/main.js
