# protobuf build FROM node:14-buster-slim as messages WORKDIR /usr/src COPY messages . RUN yarn install && yarn proto # webpack build FROM node:14-buster-slim as builder WORKDIR /usr/src COPY front/yarn.lock front/package.json ./ RUN yarn install --ignore-engines COPY front . COPY --from=messages /usr/src/generated src/Messages/generated # passing arguments as enviroment ARG DEBUG_MODE ARG JITSI_URL ARG JITSI_PRIVATE_MODE ARG PUSHER_URL ARG ADMIN_URL ARG STUN_SERVER ARG TURN_SERVER ARG TURN_USER ARG TURN_PASSWORD ARG MAX_PER_GROUP ARG MAX_USERNAME_LENGTH ARG START_ROOM_URL ARG DISABLE_NOTIFICATIONS ARG SKIP_RENDER_OPTIMIZATIONS # Removing the iframe.html file from the final image as this adds a XSS attack. # iframe.html is only in dev mode to circumvent a limitation ENV NODE_ENV=production RUN rm dist/iframe.html RUN ./templater.sh RUN \ DEBUG_MODE=$DEBUG_MODE \ JITSI_URL=$JITSI_URL \ JITSI_PRIVATE_MODE=$JITSI_PRIVATE_MODE \ PUSHER_URL=$PUSHER_URL \ ADMIN_URL=$ADMIN_URL \ STUN_SERVER=$STUN_SERVER \ TURN_SERVER=$TURN_SERVER \ TURN_USER=$TURN_USER \ TURN_PASSWORD=$TURN_PASSWORD \ MAX_PER_GROUP=$MAX_PER_GROUP \ MAX_USERNAME_LENGTH=$MAX_USERNAME_LENGTH \ START_ROOM_URL=$START_ROOM_URL \ DISABLE_NOTIFICATIONS=$DISABLE_NOTIFICATIONS \ SKIP_RENDER_OPTIMIZATIONS=$SKIP_RENDER_OPTIMIZATIONS \ yarn run build # final production image FROM nginx:mainline-alpine COPY front/nginx-vhost.conf /etc/nginx/conf.d/default.conf COPY --from=builder /usr/src/dist /usr/share/nginx/html