From 94328771bfcf300b38079c2ec4724c9e7b42432e Mon Sep 17 00:00:00 2001 From: _Bastler <_Bastler@bstly.de> Date: Fri, 20 Aug 2021 12:30:33 +0200 Subject: [PATCH] update production docker stuff --- back/Dockerfile | 10 +++---- front/Dockerfile | 60 +++++++++++++++++++++++++++++++++--------- front/nginx-vhost.conf | 16 +++++++++++ pusher/Dockerfile | 10 +++---- 4 files changed, 73 insertions(+), 23 deletions(-) create mode 100644 front/nginx-vhost.conf diff --git a/back/Dockerfile b/back/Dockerfile index e95145cd..37146152 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -1,24 +1,24 @@ # protobuf build -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 as builder +FROM node:14-buster-slim as messages WORKDIR /usr/src COPY messages . RUN yarn install && yarn proto # typescript build -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 as builder2 +FROM node:14-buster-slim as builder WORKDIR /usr/src COPY back/yarn.lock back/package.json ./ RUN yarn install COPY back . -COPY --from=builder /usr/src/generated src/Messages/generated +COPY --from=messages /usr/src/generated src/Messages/generated ENV NODE_ENV=production RUN yarn run tsc # final production image -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 +FROM node:14-buster-slim WORKDIR /usr/src COPY back/yarn.lock back/package.json ./ -COPY --from=builder2 /usr/src/dist /usr/src/dist +COPY --from=builder /usr/src/dist /usr/src/dist ENV NODE_ENV=production RUN yarn install --production diff --git a/front/Dockerfile b/front/Dockerfile index 6a46b498..01dcf661 100644 --- a/front/Dockerfile +++ b/front/Dockerfile @@ -1,21 +1,55 @@ -FROM thecodingmachine/workadventure-back-base:latest as builder -WORKDIR /var/www/messages -COPY --chown=docker:docker messages . +# protobuf build +FROM node:14-buster-slim as messages +WORKDIR /usr/src +COPY messages . RUN yarn install && yarn proto -# we are rebuilding on each deploy to cope with the PUSHER_URL environment URL -FROM thecodingmachine/nodejs:14-apache +# 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 --chown=docker:docker front . -COPY --from=builder --chown=docker:docker /var/www/messages/generated /var/www/html/src/Messages/generated +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 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 + +ENV NODE_ENV=production +ENV DEBUG_MODE=$DEBUG_MODE +ENV JITSI_URL=$JITSI_URL +ENV JITSI_PRIVATE_MODE=$JITSI_PRIVATE_MODE +ENV PUSHER_URL=$PUSHER_URL +ENV ADMIN_URL=$ADMIN_URL +ENV TURN_SERVER=$TURN_SERVER +ENV TURN_USER=$TURN_USER +ENV TURN_PASSWORD=$TURN_PASSWORD +ENV MAX_PER_GROUP=$MAX_PER_GROUP +ENV MAX_USERNAME_LENGTH=$MAX_USERNAME_LENGTH +ENV START_ROOM_URL=$START_ROOM_URL +ENV DISABLE_NOTIFICATIONS=$DISABLE_NOTIFICATIONS +ENV SKIP_RENDER_OPTIMIZATIONS=$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 RUN rm dist/iframe.html +RUN ./templater.sh +RUN yarn run build -RUN yarn install --ignore-engines - -ENV NODE_ENV=production -ENV STARTUP_COMMAND_0="./templater.sh" -ENV STARTUP_COMMAND_1="yarn run build" -ENV APACHE_DOCUMENT_ROOT=dist/ +# 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 diff --git a/front/nginx-vhost.conf b/front/nginx-vhost.conf new file mode 100644 index 00000000..c22bfcdc --- /dev/null +++ b/front/nginx-vhost.conf @@ -0,0 +1,16 @@ +server { + listen 80; + listen [::]:80; + server_name localhost; + + access_log off; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + location ~ ^/[@_]/ { + try_files $uri $uri/ /index.html; + } +} \ No newline at end of file diff --git a/pusher/Dockerfile b/pusher/Dockerfile index 4aec9748..4b9af631 100644 --- a/pusher/Dockerfile +++ b/pusher/Dockerfile @@ -1,24 +1,24 @@ # protobuf build -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 as builder +FROM node:14-buster-slim as messages WORKDIR /usr/src COPY messages . RUN yarn install && yarn proto # typescript build -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 as builder2 +FROM node:14-buster-slim as builder WORKDIR /usr/src COPY pusher/yarn.lock pusher/package.json ./ RUN yarn install COPY pusher . -COPY --from=builder /usr/src/generated src/Messages/generated +COPY --from=messages /usr/src/generated src/Messages/generated ENV NODE_ENV=production RUN yarn run tsc # final production image -FROM node:14.15.4-buster-slim@sha256:cbae886186467bbfd274b82a234a1cdfbbd31201c2a6ee63a6893eefcf3c6e76 +FROM node:14-buster-slim WORKDIR /usr/src COPY pusher/yarn.lock pusher/package.json ./ -COPY --from=builder2 /usr/src/dist /usr/src/dist +COPY --from=builder /usr/src/dist /usr/src/dist ENV NODE_ENV=production RUN yarn install --production