ARG NODE_VERSION
FROM node:$NODE_VERSION-slim

# COPY dumb-init to correctly handle signals sent to the main process
COPY deployment/dumb-init /sbin/dumb-init
ENTRYPOINT ["/sbin/dumb-init"]

# ARGs AND ENVs
ENV WORKSPACE /app
WORKDIR $WORKSPACE
ARG NPM_TOKEN
ENV NPM_TOKEN $NPM_TOKEN
ARG NODE_ENV
ENV NODE_ENV $NODE_ENV

# METADATA
ARG VERSION
LABEL VERSION="$VERSION"
ARG GITHASH
LABEL GITHASH="$GITHASH"
ARG BUILDNUMBER
LABEL BUILDNUMBER="$BUILDNUMBER"

# INSTALL ALL PRODUCTION-DEPENDENCIES
COPY package.json package-lock.json .npmrc $WORKSPACE/
RUN ["npm", "install", "--production"]

# COPY APP-FILES
COPY start.js app.js server.js index.js $WORKSPACE/
COPY dataaccess $WORKSPACE/dataaccess
COPY lib $WORKSPACE/lib
COPY middlewares $WORKSPACE/middlewares
COPY routes $WORKSPACE/routes
COPY views $WORKSPACE/views
COPY utils $WORKSPACE/utils

# COPY FRONTEND-BUNDLE
COPY public/dist $WORKSPACE/public/dist
COPY public/ads $WORKSPACE/public/ads

# COOP NEW-RELIC CONFIG
COPY newrelic.js $WORKSPACE/

EXPOSE 8080
# Health Check
HEALTHCHECK --interval=10s --timeout=3s --start-period=3s --retries=3 CMD ["/app/node_modules/@technik-sde/szm-docker-tools/bin/health_check.sh", "8080"]

USER node:node

# START THE APP
CMD ["npm", "start"]
