From 99c259bf18f35a46689189865ce93d4adc79ddd2 Mon Sep 17 00:00:00 2001 From: bunkerity Date: Fri, 28 May 2021 16:41:41 +0200 Subject: [PATCH] templating - prepare integration into ui --- confs/site/reverse-proxy.conf | 2 +- gen/Configurator.py | 2 +- gen/Templator.py | 2 +- ui/Dockerfile | 33 +++++++++++++++++++-------------- ui/Dockerfile-amd64 | 27 ++++++++++++++++++--------- ui/Dockerfile-arm32v7 | 30 +++++++++++++++++++----------- ui/Dockerfile-arm64v8 | 30 +++++++++++++++++++----------- ui/Dockerfile-i386 | 27 ++++++++++++++++++--------- ui/dependencies.sh | 4 ++++ ui/prepare.sh | 14 ++++++++++++++ 10 files changed, 114 insertions(+), 57 deletions(-) create mode 100644 ui/dependencies.sh create mode 100644 ui/prepare.sh diff --git a/confs/site/reverse-proxy.conf b/confs/site/reverse-proxy.conf index 284df6e..312da41 100644 --- a/confs/site/reverse-proxy.conf +++ b/confs/site/reverse-proxy.conf @@ -1,6 +1,6 @@ {% if USE_REVERSE_PROXY == "yes" %} {% for k, v in all.items() %} - {% if k.startswith("REVERSE_PROXY_URL") %} + {% if k.startswith("REVERSE_PROXY_URL") and v != "" %} {% set url = v %} {% set host = all[k.replace("URL", "HOST")] if k.replace("URL", "HOST") in all else "" %} {% set ws = all[k.replace("URL", "WS")] if k.replace("URL", "WS") in all else "" %} diff --git a/gen/Configurator.py b/gen/Configurator.py index 5182fd8..3ca4732 100644 --- a/gen/Configurator.py +++ b/gen/Configurator.py @@ -24,7 +24,7 @@ class Configurator : if self.__check_var(var, value) : self.__variables[var] = value else : - print("Problem with " + var + "=" + value) + print("Ignoring " + var + "=" + value) def get_config(self) : config = {} diff --git a/gen/Templator.py b/gen/Templator.py index 97e4b57..e58a56c 100644 --- a/gen/Templator.py +++ b/gen/Templator.py @@ -9,7 +9,7 @@ class Templator : self.__target_path = target_path if not self.__target_path.endswith("/") : self.__target_path += "/" - self.__template_env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=self.__input_path)) + self.__template_env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=self.__input_path), trim_blocks=True, lstrip_blocks=True) def render_global(self) : return self.__render("global") diff --git a/ui/Dockerfile b/ui/Dockerfile index ec5964f..47386b7 100644 --- a/ui/Dockerfile +++ b/ui/Dockerfile @@ -1,23 +1,28 @@ +FROM nginx:1.20.1-alpine AS builder + FROM alpine -RUN apk add py3-pip apache2-utils bash && \ - pip3 install docker flask && \ - mkdir /opt/entrypoint && \ - mkdir -p /opt/confs/site && \ - addgroup -g 101 nginx && \ - adduser -h /var/cache/nginx -g nginx -s /sbin/nologin -G nginx -D -H -u 101 nginx && \ - mkdir /etc/nginx && \ - chown root:nginx /etc/nginx && \ - chmod 770 /etc/nginx - +COPY --from=builder /etc/nginx/ /opt/confs/nginx +COPY ui/dependencies.sh /tmp +RUN chmod +x /tmp/dependencies.sh && \ + /tmp/dependencies.sh && \ + rm -f /tmp/dependencies.sh + +COPY gen/ /opt/gen +#COPY entrypoint/ /opt/entrypoint +#COPY confs/global/ /opt/confs/global COPY confs/site/ /opt/confs/site -COPY entrypoint/* /opt/entrypoint/ -COPY ui/ /opt/entrypoint/ -RUN chmod +x /opt/entrypoint/*.py /opt/entrypoint/*.sh +COPY ui/* /opt/entrypoint/ +COPY settings.json /opt + +COPY ui/prepare.sh /tmp + chmod +x /tmp/prepare && \ + /tmp/prepare.sh && \ + rm -f /tmp/prepare.sh EXPOSE 5000 WORKDIR /opt/entrypoint ENV FLASK_APP entrypoint.py -ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] +ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/ui/Dockerfile-amd64 b/ui/Dockerfile-amd64 index aa06df5..1063fef 100644 --- a/ui/Dockerfile-amd64 +++ b/ui/Dockerfile-amd64 @@ -1,19 +1,28 @@ +FROM nginx:1.20.1-alpine AS builder + FROM amd64/alpine -RUN apk add py3-pip apache2-utils bash && \ - pip3 install docker flask && \ - mkdir /opt/entrypoint && \ - mkdir -p /opt/confs/site +COPY --from=builder /etc/nginx/ /opt/confs/nginx +COPY ui/dependencies.sh /tmp +RUN chmod +x /tmp/dependencies.sh && \ + /tmp/dependencies.sh && \ + rm -f /tmp/dependencies.sh + +COPY gen/ /opt/gen +#COPY entrypoint/ /opt/entrypoint +#COPY confs/global/ /opt/confs/global COPY confs/site/ /opt/confs/site -COPY entrypoint/* /opt/entrypoint/ -COPY ui/ /opt/entrypoint/ -RUN chmod +x /opt/entrypoint/*.py /opt/entrypoint/*.sh +COPY ui/* /opt/entrypoint/ +COPY settings.json /opt -VOLUME /etc/nginx +COPY ui/prepare.sh /tmp + chmod +x /tmp/prepare && \ + /tmp/prepare.sh && \ + rm -f /tmp/prepare.sh EXPOSE 5000 WORKDIR /opt/entrypoint ENV FLASK_APP entrypoint.py -ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] +ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/ui/Dockerfile-arm32v7 b/ui/Dockerfile-arm32v7 index 646e93c..7858cb8 100644 --- a/ui/Dockerfile-arm32v7 +++ b/ui/Dockerfile-arm32v7 @@ -1,26 +1,34 @@ -FROM alpine AS builder +FROM alpine AS builder1 ENV QEMU_URL https://github.com/balena-io/qemu/releases/download/v4.0.0%2Bbalena2/qemu-4.0.0.balena2-arm.tar.gz RUN apk add curl && curl -L ${QEMU_URL} | tar zxvf - -C . --strip-components 1 +FROM nginx:1.20.1-alpine AS builder2 + FROM arm32v7/alpine -COPY --from=builder qemu-arm-static /usr/bin +COPY --from=builder1 qemu-arm-static /usr/bin +COPY --from=builder2 /etc/nginx/ /opt/confs/nginx -RUN apk add py3-pip apache2-utils bash && \ - pip3 install docker flask && \ - mkdir /opt/entrypoint && \ - mkdir -p /opt/confs/site +COPY ui/dependencies.sh /tmp +RUN chmod +x /tmp/dependencies.sh && \ + /tmp/dependencies.sh && \ + rm -f /tmp/dependencies.sh +COPY gen/ /opt/gen +#COPY entrypoint/ /opt/entrypoint +#COPY confs/global/ /opt/confs/global COPY confs/site/ /opt/confs/site -COPY entrypoint/* /opt/entrypoint/ -COPY ui/ /opt/entrypoint/ -RUN chmod +x /opt/entrypoint/*.py /opt/entrypoint/*.sh +COPY ui/* /opt/entrypoint/ +COPY settings.json /opt -VOLUME /etc/nginx +COPY ui/prepare.sh /tmp + chmod +x /tmp/prepare && \ + /tmp/prepare.sh && \ + rm -f /tmp/prepare.sh EXPOSE 5000 WORKDIR /opt/entrypoint ENV FLASK_APP entrypoint.py -ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] +ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/ui/Dockerfile-arm64v8 b/ui/Dockerfile-arm64v8 index 859f0d0..022ca24 100644 --- a/ui/Dockerfile-arm64v8 +++ b/ui/Dockerfile-arm64v8 @@ -1,26 +1,34 @@ -FROM alpine AS builder +FROM alpine AS builder1 ENV QEMU_URL https://github.com/balena-io/qemu/releases/download/v4.0.0%2Bbalena2/qemu-4.0.0.balena2-aarch64.tar.gz RUN apk add curl && curl -L ${QEMU_URL} | tar zxvf - -C . --strip-components 1 +FROM nginx:1.20.1-alpine AS builder2 + FROM arm64v8/alpine -COPY --from=builder qemu-aarch64-static /usr/bin +COPY --from=builder1 qemu-aarch64-static /usr/bin +COPY --from=builder2 /etc/nginx/ /opt/confs/nginx -RUN apk add py3-pip apache2-utils bash && \ - pip3 install docker flask && \ - mkdir /opt/entrypoint && \ - mkdir -p /opt/confs/site +COPY ui/dependencies.sh /tmp +RUN chmod +x /tmp/dependencies.sh && \ + /tmp/dependencies.sh && \ + rm -f /tmp/dependencies.sh +COPY gen/ /opt/gen +#COPY entrypoint/ /opt/entrypoint +#COPY confs/global/ /opt/confs/global COPY confs/site/ /opt/confs/site -COPY entrypoint/* /opt/entrypoint/ -COPY ui/ /opt/entrypoint/ -RUN chmod +x /opt/entrypoint/*.py /opt/entrypoint/*.sh +COPY ui/* /opt/entrypoint/ +COPY settings.json /opt -VOLUME /etc/nginx +COPY ui/prepare.sh /tmp + chmod +x /tmp/prepare && \ + /tmp/prepare.sh && \ + rm -f /tmp/prepare.sh EXPOSE 5000 WORKDIR /opt/entrypoint ENV FLASK_APP entrypoint.py -ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] +ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/ui/Dockerfile-i386 b/ui/Dockerfile-i386 index 53471b4..e254a13 100644 --- a/ui/Dockerfile-i386 +++ b/ui/Dockerfile-i386 @@ -1,19 +1,28 @@ +FROM nginx:1.20.1-alpine AS builder + FROM i386/alpine -RUN apk add py3-pip apache2-utils bash && \ - pip3 install docker flask && \ - mkdir /opt/entrypoint && \ - mkdir -p /opt/confs/site +COPY --from=builder /etc/nginx/ /opt/confs/nginx +COPY ui/dependencies.sh /tmp +RUN chmod +x /tmp/dependencies.sh && \ + /tmp/dependencies.sh && \ + rm -f /tmp/dependencies.sh + +COPY gen/ /opt/gen +#COPY entrypoint/ /opt/entrypoint +#COPY confs/global/ /opt/confs/global COPY confs/site/ /opt/confs/site -COPY entrypoint/* /opt/entrypoint/ -COPY ui/ /opt/entrypoint/ -RUN chmod +x /opt/entrypoint/*.py /opt/entrypoint/*.sh +COPY ui/* /opt/entrypoint/ +COPY settings.json /opt -VOLUME /etc/nginx +COPY ui/prepare.sh /tmp + chmod +x /tmp/prepare && \ + /tmp/prepare.sh && \ + rm -f /tmp/prepare.sh EXPOSE 5000 WORKDIR /opt/entrypoint ENV FLASK_APP entrypoint.py -ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] +ENTRYPOINT ["/usr/bin/python3", "-m", "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/ui/dependencies.sh b/ui/dependencies.sh new file mode 100644 index 0000000..5dc7af6 --- /dev/null +++ b/ui/dependencies.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +apk add py3-pip bash +pip3 install docker flask \ No newline at end of file diff --git a/ui/prepare.sh b/ui/prepare.sh new file mode 100644 index 0000000..e8f6d5d --- /dev/null +++ b/ui/prepare.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# create nginx user +addgroup -g 101 nginx +adduser -h /var/cache/nginx -g nginx -s /bin/sh -G nginx -D -H -u 101 nginx + +# prepare /opt +chown -R root:nginx /opt +find /opt -type f -exec chmod 0740 {} \; +find /opt -type d -exec chmod 0750 {} \; +chmod ugo+x /opt/entrypoint/* +chmod ugo+x /opt/gen/main.py +chmod 770 /opt +chmod 440 /opt/settings.json \ No newline at end of file