FROM node:16.16.0-alpine as prebuild

# Set working directory
WORKDIR /var/www/app

COPY ./package*.json ./

# Install dependencies
RUN yarn install --production --frozen-lockfile


ARG ALAA_API_V2_SERVER=https://alaatv.com/api/v2
ARG ALAA_API_V1_SERVER=https://alaatv.com/api/v1
ARG ALAA_WEB_SERVER=https://alaatv.com
ARG ALAA_MINIO_SERVER=https://stage-minio.alaatv.com
ARG VUEX_PERSISTED_STATE_KEY=vuex
ARG GET_TIME_SERVER=/time
ARG ALAA_API_V1=/alaa/api/v1
ARG ALAA_API_V2=/alaa/api/v2
ARG ALAA_WEB=/alaa
ARG ALAA_MINIO=/minio
ARG NGINX_PORT=8081
ARG SSR_PORT=3000
ARG GOOGLE_TAG_MANAGER_TOKEN=GTM-PNP8RDW
ARG HEAP_MEMORY_ALLOCATION_INTERVAL=10000
ARG MAX_HEAP_MEMORY_ALLOCATION_IN_PERCENT=70
ARG LOG_REQUEST=true

# Copy all files
COPY ./ ./

# Build app on SSR mode
RUN yarn build:ssr


##############################################


FROM node:16.16.0-alpine


COPY --from=prebuild /var/www/app/dist/ssr /var/www/app/dist/ssr

WORKDIR /var/www/app/dist/ssr

RUN yarn install

# Expose the listening port
EXPOSE 3000

# Run container as non-root (unprivileged) user
# The "node" user is provided in the Node.js Alpine base image

USER node

CMD ["node", "/var/www/app/dist/ssr/index.js"]
