From 9d62f10d3e0e2a8ba0ef42ff338dadc5b0423a34 Mon Sep 17 00:00:00 2001 From: Armin <armin.co@hs-bochum.de> Date: Fri, 19 Jun 2020 12:31:26 +0200 Subject: [PATCH] Multistage Dockerfile One Dockerfile that contains: base mumble-web image for building nginx webserver with builded mumble-web page image with websockify --- Dockerfile | 49 ++++++++++++++++++++++++++++++++++++++ Dockerfile.mumble-web | 30 ----------------------- webserver/Dockerfile.nginx | 15 ------------ 3 files changed, 49 insertions(+), 45 deletions(-) create mode 100644 Dockerfile delete mode 100644 Dockerfile.mumble-web delete mode 100644 webserver/Dockerfile.nginx diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..65da15d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,49 @@ +# multi stage dockerfile +# it defines three different images +# 1. mumble-web +# 2. mumble-web with nginx +# 3. websockfiy as web socket + + +# mumble-web base image +FROM alpine:edge AS mumble-web +LABEL maintainer="Armin Co <armin.co@hs-bochum.de" +# copy mumble-web repository into docker image +COPY ./mumble-web /home/node +# install deps for building mumble web +RUN apk add --no-cache \ + git \ + nodejs \ + npm \ + && \ + adduser -D -g 1001 -u 1001 -h /home/node node && \ + mkdir -p /home/node && \ + mkdir -p /home/node/.npm-global && \ + mkdir -p /home/node/app && \ + chown -R node: /home/node +USER node +ENV PATH=/home/node/.npm-global/bin:$PATH +ENV NPM_CONFIG_PREFIX=/home/node/.npm-global +# build mumble-web +RUN cd /home/node && \ + npm install && \ + npm run build && \ + npm audit fix && \ + npm audit + + +# add nginx as webserver to mumble web +FROM nginx:alpine AS mumble-web-nginx +USER root +COPY --from=mumble-web /home/node/dist /home/node/dist +RUN apk add --no-cache nginx && \ + adduser -D -g 'www' www && \ + mkdir /data +EXPOSE 443 + + +# websockify +FROM alpine:edge AS websockify +RUN echo http://nl.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories && \ + apk add --no-cache websockify +EXPOSE 64737 diff --git a/Dockerfile.mumble-web b/Dockerfile.mumble-web deleted file mode 100644 index cc57a69..0000000 --- a/Dockerfile.mumble-web +++ /dev/null @@ -1,30 +0,0 @@ -FROM nginx:alpine - -LABEL maintainer="Armin Co <armin.co@hs-bochum.de" - -# copy mumble-web repository into docker image -COPY ./mumble-web /home/node - -RUN apk add --no-cache \ - git \ - nodejs \ - npm \ - && \ - adduser -D -g 1001 -u 1001 -h /home/node node && \ - mkdir -p /home/node && \ - mkdir -p /home/node/.npm-global && \ - mkdir -p /home/node/app && \ - chown -R node: /home/node - -USER node - -ENV PATH=/home/node/.npm-global/bin:$PATH -ENV NPM_CONFIG_PREFIX=/home/node/.npm-global - -# "install" mumble-web -RUN cd /home/node && \ - npm install && \ - npm run build && \ - npm audit fix && \ - npm audit - diff --git a/webserver/Dockerfile.nginx b/webserver/Dockerfile.nginx deleted file mode 100644 index 2ee8df8..0000000 --- a/webserver/Dockerfile.nginx +++ /dev/null @@ -1,15 +0,0 @@ -FROM build_mumble_web_image - -USER root - -RUN apk add --no-cache bash nginx && \ - adduser -D -g 'www' www && \ - mkdir /config - -EXPOSE 443 -COPY webserver/entrypoint.sh / -COPY webserver/ /config - - -RUN chmod +x /entrypoint.sh -CMD /bin/bash ./entrypoint.sh \ No newline at end of file -- GitLab