From 2005baaad1ec6e853daddeba818fc6e1399db634 Mon Sep 17 00:00:00 2001
From: Armin <armin.co@hs-bochum.de>
Date: Mon, 15 Jun 2020 11:39:16 +0200
Subject: [PATCH] fixed image

and preparation for webserver
---
 Dockerfile                 | 16 ----------------
 Dockerfile.mumble-web      | 30 +++++++++++++++++++++++++++++
 build_mumble_web.sh        | 22 +++++++++++++++------
 webserver/Dockerfile.nginx | 11 +++++++++++
 webserver/certs/test.crt   | 21 ++++++++++++++++++++
 webserver/certs/test.key   | 28 +++++++++++++++++++++++++++
 webserver/conf/nginx.conf  | 39 ++++++++++++++++++++++++++++++++++++++
 webserver/entrypoint.sh    |  5 +++++
 8 files changed, 150 insertions(+), 22 deletions(-)
 delete mode 100644 Dockerfile
 create mode 100644 Dockerfile.mumble-web
 create mode 100644 webserver/Dockerfile.nginx
 create mode 100644 webserver/certs/test.crt
 create mode 100644 webserver/certs/test.key
 create mode 100644 webserver/conf/nginx.conf
 create mode 100644 webserver/entrypoint.sh

diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index e728db0..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM alpine:edge
-
-LABEL maintainer="Armin Co <armin.co@hs-bochum.de"
-
-# copy mumble-web repository into docker image
-COPY ./mumble-web /home/node
-
-# install git and npm
-RUN apk add --no-cache git npm 
-
-# "install" mumble-web
-RUN cd /home/node   && \
-    npm install     && \
-    npm run build   && \
-    npm audit fix   && \
-    npm audit
diff --git a/Dockerfile.mumble-web b/Dockerfile.mumble-web
new file mode 100644
index 0000000..cc57a69
--- /dev/null
+++ b/Dockerfile.mumble-web
@@ -0,0 +1,30 @@
+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/build_mumble_web.sh b/build_mumble_web.sh
index 9b91787..b4dd765 100755
--- a/build_mumble_web.sh
+++ b/build_mumble_web.sh
@@ -11,6 +11,10 @@ CONTAINER_NAME="build_mumble_web_container"
 DIST_DIR="/home/node/dist"
 # path on the host where to copy the files
 DESTINATION_HOST="./dist"
+# select if create image should be removed
+DELETE_IMAGE="false"
+# Run test with container
+RUN_TEST="true"
 
 function verify_commit_HEAD() {
     cd $REPOSITORY
@@ -39,12 +43,18 @@ docker build -t $IMAGE_NAME . > build.log
 docker create --name $CONTAINER_NAME "${IMAGE_NAME}"
 # remove previously copied files
 rm -rf dist/
-# copy files from container to host
+# # copy files from container to host
 docker cp $CONTAINER_NAME:"${DIST_DIR}" $DESTINATION_HOST
 # remove created container
 docker rm -f $CONTAINER_NAME
-# remove the created image
-# otherwise it would only pull updates
-# from other node dependenices
-# if there was an update in the repository
-docker rmi $IMAGE_NAME
\ No newline at end of file
+
+if [ $DELETE_IMAGE == "true" ]
+then
+    # remove the created image
+    docker rmi $IMAGE_NAME
+fi
+
+if [ $RUN_TEST == "true" ]
+then
+    docker run --rm -d -p 443:443 --name mumble-web-nginx-test $IMAGE_NAME
+fi
\ No newline at end of file
diff --git a/webserver/Dockerfile.nginx b/webserver/Dockerfile.nginx
new file mode 100644
index 0000000..1aebde1
--- /dev/null
+++ b/webserver/Dockerfile.nginx
@@ -0,0 +1,11 @@
+FROM build_mumble_web_image
+
+USER root
+
+RUN apk add --no-cache nginx && \
+    adduser -D -g 'www' www && \
+    mkdir /config
+
+EXPOSE 443
+
+CMD ./config/entrypoint.sh
\ No newline at end of file
diff --git a/webserver/certs/test.crt b/webserver/certs/test.crt
new file mode 100644
index 0000000..e20f663
--- /dev/null
+++ b/webserver/certs/test.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDazCCAlOgAwIBAgIUV/1KSmiz97r880nZQ91GAX8YFCUwDQYJKoZIhvcNAQEL
+BQAwRTELMAkGA1UEBhMCREUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
+GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA2MTAwOTQ5MTZaFw0yMTA2
+MTAwOTQ5MTZaMEUxCzAJBgNVBAYTAkRFMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
+HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCer0AbjQ/nsil/oF1kznswiXnizix6iO7RVSxr07ys
+4EFdYXgzm/qEG8uaRnSk6pgpLzAB5t0HE84f6oT+bBetJsyv5gdZsNoXQJb55GAn
+ZxvxsckKBS8/qlvGg6gA6e6ZTS1ZIc15wEXwpYfcCGFXX839AcQRMqCFFDshUstH
+tIjt2JS9e60+ZXD5Gvl/CtJ+faYWV7T+yIrvY5vCT05LEt+XPgIOP9rdnMKmcpBR
+wlfLepYV3sbeAMuj6GIx7ZYAZfHTCj8CeiYyVRykGP3BRccocgz7ZsSgFqH6p6tM
+FfVDeNXQUzvsjmIGYyPhXFnR/WYgoLZJEvPmgLgzYr5hAgMBAAGjUzBRMB0GA1Ud
+DgQWBBT6OHE8Yd1AZnh9Mt5Q5yjRSYoVujAfBgNVHSMEGDAWgBT6OHE8Yd1AZnh9
+Mt5Q5yjRSYoVujAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAV
+Vyc9epCKBsNXu1RyDmv0CqIPmSeJGkaTz9IFsMZ1GZhWF2XUCuRr+zWsBiOCf+zH
+G5zKi5oU+crUQmaFvC9M3JxoeHjxzDsg6+kW+8acoCBxhRwml7e4cor+Z1Ghb9Rm
+jOlQuuKnJy0UHp4JyLrxZrwhZuMfN16/jYNnAH9o7vYqvFMrfuZuPvSyPERp3EVL
+DIGUy4+7kseP+Uc0U2vNDcMMllaqpKjFyDmoPQfsBldKKOFvyCYJdAkcXrm47SSf
+IQvsRblPKvW6FTEOZ1fQKR2S8OTTqExq6uP0hoy1qmeRXI3m+5tmsYIxLdjZBD+Z
+jsKklG3dnPSOY0BSIjdk
+-----END CERTIFICATE-----
diff --git a/webserver/certs/test.key b/webserver/certs/test.key
new file mode 100644
index 0000000..32cb48d
--- /dev/null
+++ b/webserver/certs/test.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCer0AbjQ/nsil/
+oF1kznswiXnizix6iO7RVSxr07ys4EFdYXgzm/qEG8uaRnSk6pgpLzAB5t0HE84f
+6oT+bBetJsyv5gdZsNoXQJb55GAnZxvxsckKBS8/qlvGg6gA6e6ZTS1ZIc15wEXw
+pYfcCGFXX839AcQRMqCFFDshUstHtIjt2JS9e60+ZXD5Gvl/CtJ+faYWV7T+yIrv
+Y5vCT05LEt+XPgIOP9rdnMKmcpBRwlfLepYV3sbeAMuj6GIx7ZYAZfHTCj8CeiYy
+VRykGP3BRccocgz7ZsSgFqH6p6tMFfVDeNXQUzvsjmIGYyPhXFnR/WYgoLZJEvPm
+gLgzYr5hAgMBAAECggEAdnn8UFWy0VfI+hweftxXR7btBPTQarCANlT0dJFDJoPM
+6c6TM1063pXuHwKJpnPtJZqwqkrXLaiQ1m1/3IGR79qvKomBZWrQelnkHzFuxRyL
+1ZnasxuJ2mv0V7QGpKAEX/sqZ4kAY+21imXcmOC85MKIBmXiIMD+7j1bpJavZZnt
+RWYzpGBsz4cG3QARO76oxfoG3G4qKsbZrpB0ro5ZenB5Gp1c9WjeGmdlaKBi+qIH
+zu4ltd++1TEfcM6lZAfd6dsyzD65N822xQLApUs6PXjCo2zQYfy7Yb8ob+2UsGda
+mpwWoOsd8PCvqXirj4rOfAFVKr49BgygT4Gq9AlxPQKBgQDKfhKapxU+Fq/bRFNO
+W50tv/FTK7O/gnQpm0X7E2TYKLm/4TQrPHG+ALqhJPArXEXgkaxXGHRm9pkfdrA3
+epm+WqV37rLRkVAHERPmZe42WfQ1Mr5E9jagDYM/a8vQANEse7mJvACjE5Cx5xIm
+ARQ6RHPEuMxZeYfrVHwLneOgCwKBgQDInbjm+6OKk1WuzErTIF+aj0+NLm3z295T
+f6ThXrC+Ube2h4UBKCxsvHV6BgiKj2hKFI9vK4LTGsGBZr5DeEA6eovt3pQZU6Q6
+6vCp/Ko4DAssyP+5BYW1PHOIUN8mQunGrrbkwWIi69fieQ/ZhNEFF1R6qc0Xa0lv
+QAeqFFdCwwKBgQCMTu1PMgUbH5c9BMwAmKSBxeVO7xI+2gLprYjBH8AZs6Z52W9P
+ojNiJ5kp/bFZKjfVErtrIivOCIMzdQdHefE8IA1V3BUV922PZ/r1A54bFRuNHRsQ
+J9bT8mkGMghomZhXDWgTkyyR0wXI78b4hHjiovngzvfx668Nll3Zos7N3wKBgQCs
+zYbOl6S4Ic7lQR2WnEUdeiI45uxY6GOqIsHgStMNLJCFTlhXtcYGZ5L9Z6MFzx8y
+6GDgjmci9eIGV3y92x/f/1z2qQmCg1RsV6Czm2r32g/qJLx5H/ObOBYALkD40RxT
+Qn1Rr+2bTPDpKARqBgiRTRY8jnSVnpljlZDEhL7hRwKBgQCdeqqkq5nO7uxmzq8Y
+WM69JEvDTwCtRFi6748iWuntYqfKes5EajxzzhHk7Yb1AL2pyVWAqpxGPxi4Ed9b
+j45SdyYmBs0mZwUpkwjCFF12vry+SXDvLrhygTmBEjRWpPBFKMewhy3RRi4fbsqg
+IG9YnM1/WJOvjSQ0/ZvEKeJ6Bg==
+-----END PRIVATE KEY-----
diff --git a/webserver/conf/nginx.conf b/webserver/conf/nginx.conf
new file mode 100644
index 0000000..2f17e8c
--- /dev/null
+++ b/webserver/conf/nginx.conf
@@ -0,0 +1,39 @@
+user                    www;
+worker_processes        auto;
+
+error_log               /var/log/nginx/error.log warn;
+
+events {
+    worker_connections 1024;
+}
+
+http {
+    include             /etc/nginx/mime.types;
+    default_type        application/octet-stream;
+    sendfile            on;
+    access_log          /var/log/nginx/access.log;
+    keepalive_timeout   3000;
+
+    server {
+        listen 443 ssl;
+        server_name localhost;
+        ssl_certificate /home/node/test.crt;
+        ssl_certificate_key /home/node/test.key;
+
+        location / {
+            root /home/node/dist;
+        }
+
+        location /demo {
+            proxy_pass http://192.168.188.20:64737;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection $connection_upgrade;
+        }
+    }
+    
+    map $http_upgrade $connection_upgrade {
+        default upgrade;
+        '' close;
+    }
+}
\ No newline at end of file
diff --git a/webserver/entrypoint.sh b/webserver/entrypoint.sh
new file mode 100644
index 0000000..f17ddb9
--- /dev/null
+++ b/webserver/entrypoint.sh
@@ -0,0 +1,5 @@
+#!bin/bash
+
+mv /config/nginx.conf /etc/nginx/nginx.conf
+
+nginx -g 'daemon off;'; nginx -s reload;
\ No newline at end of file
-- 
GitLab