FROM node:20.9-alpine AS prebuild # Set working directory WORKDIR /var/www/app COPY ./package*.json ./ # Install dependencies RUN yarn install --production --frozen-lockfile ARG APP_API_SERVER=https://temp.shahidpalizvani.ir/api ARG VUEX_PERSISTED_STATE_KEY=vuex ARG GET_TIME_SERVER=/time ARG APP_API=/api ARG NGINX_PORT=80 ARG SSR_PORT=3000 ARG APP_ENV=production ARG GOOGLE_TAG_MANAGER_TOKEN=GTM-PNP1111 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:20.9-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 ${PORT} # 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"]