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