From bca3c0151fcb2fa409c26bc28044eba297250822 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Sat, 8 Feb 2020 19:40:50 +0100 Subject: docker: Dockerize euscanwww (W.I.P.) Signed-off-by: Sebastian Pipping --- Dockerfile | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 44 ++++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 20 ++++++++++++++++ requirements.txt | 41 ++++++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 docker-entrypoint.sh create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9dda8ec --- /dev/null +++ b/Dockerfile @@ -0,0 +1,67 @@ +# Copyright 2020 Gentoo Authors +# Licensed under the GNU General Public License v2 + +FROM gentoo/stage3-amd64:20200208 + +RUN wget https://gentoo.osuosl.org/snapshots/gentoo-latest.tar.xz \ + && \ + tar -C /var/db/repos/ -x -p -f gentoo-latest.tar.xz \ + && \ + mv /var/db/repos/gentoo-20??????/ /var/db/repos/gentoo/ \ + && \ + rm gentoo-latest.tar.xz + +RUN emaint sync --repo gentoo + +RUN eselect profile show \ + && \ + echo 'net-analyzer/rrdtool python' > /etc/portage/package.use/net-analyzer--rrdtool \ + && \ + echo 'dev-lang/python:2.7 sqlite tk' > /etc/portage/package.use/dev-lang--python \ + && \ + echo 'PYTHON_TARGETS="${PYTHON_TARGETS} python2_7"' >> /etc/portage/make.conf \ + && \ + echo 'PYTHON_SINGLE_TARGET="python2_7"' >> /etc/portage/make.conf \ + && \ + echo 'USE="${USE} bindist -syslog"' >> /etc/portage/make.conf + +# NOTE: First build dependencies, then runtime-only dependencies +RUN emerge --tree -v -j2 --color y -1uU \ + dev-lang/python:2.7 \ + dev-libs/cyrus-sasl \ + dev-python/pip \ + dev-python/setuptools \ + dev-python/wheel \ + net-nds/openldap \ + \ + app-portage/eix \ + app-portage/gentoolkit \ + app-portage/layman \ + net-analyzer/rrdtool \ + sys-apps/portage \ + && \ + rm -f /var/cache/distfiles/* + +ENV PATH=/root/.local/bin/:${PATH} +COPY requirements.txt /tmp/euscan/ +RUN pip2 install --user -r /tmp/euscan/requirements.txt + +COPY setup.py README.rst /tmp/euscan/ +COPY bin/ /tmp/euscan/bin/ +COPY pym/ /tmp/euscan/pym/ + +WORKDIR /tmp/euscan/ +RUN pip2 install --user . + +RUN pip2 check +RUN bash -c 'diff -U0 <(pip2 freeze --user | sed "/^\(euscan\|virtualenv\)==/d" | sort -f) <(sed -e "s/ *#.*//" -e "/^$/d" /tmp/euscan/requirements.txt | sort -f)' + +COPY euscanwww/ /tmp/euscan/euscanwww/ + +COPY docker-entrypoint.sh /root/ + +WORKDIR /tmp/euscan/euscanwww/ + +EXPOSE 55080 +ENTRYPOINT ["/root/docker-entrypoint.sh"] +CMD [] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4daf0e2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +# Copyright 2020 Gentoo Authors +# Licensed under the GNU General Public License v2 + +version: "3" + +services: + runserver: + depends_on: + - celeryd + image: ${COMPOSE_PROJECT_NAME}_celeryd:latest + environment: + DJANGO_SETTINGS_MODULE: euscanwww.settings + EUSCAN_SECRET_KEY: ${EUSCAN_SECRET_KEY:?} + volumes: + - "./euscanwww/:/tmp/euscan/euscanwww/" + - "./pym/euscan/:/root/.local/lib64/python2.7/site-packages/euscan" + ports: + - "127.0.0.1:55080:55080" + tty: true + + celerycam: + depends_on: + - celeryd + image: ${COMPOSE_PROJECT_NAME}_celeryd:latest + environment: + DJANGO_SETTINGS_MODULE: euscanwww.settings + EUSCAN_SECRET_KEY: ${EUSCAN_SECRET_KEY:?} + volumes: + - "./euscanwww/:/tmp/euscan/euscanwww/" + - "./pym/euscan/:/root/.local/lib64/python2.7/site-packages/euscan" + command: python2 manage.py celerycam + tty: true + + celeryd: + build: + context: . + environment: + DJANGO_SETTINGS_MODULE: euscanwww.settings + EUSCAN_SECRET_KEY: ${EUSCAN_SECRET_KEY:?} + volumes: + - "./euscanwww/:/tmp/euscan/euscanwww/" + - "./pym/euscan/:/root/.local/lib64/python2.7/site-packages/euscan" + command: python2 manage.py celeryd -B -E -l INFO + tty: true diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..4d27768 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,20 @@ +#! /usr/bin/env bash +# Copyright 2020 Gentoo Authors +# Licensed under the GNU General Public License v2 + +set -e +set -u + +PS4='# ' +set -x + +id +ip addr + +if [[ $# -gt 0 ]]; then + exec "$@" +fi + +python2 manage.py migrate + +exec python2 manage.py runserver 0.0.0.0:55080 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..cde5aa8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,41 @@ +# Direct dependencies (testing) +factory-boy==1.1.3 + +# Direct dependencies (command line utility) +BeautifulSoup==3.2.1 + +# Direct dependencies (web interface) +ansi2html==0.9.1 +Django==1.8 +django-annoying==0.10.4 +django-auth-ldap==1.1 +django-celery==3.3.1 +django-piston==0.2.3 +django-recaptcha==0.0.4 +django-registration==2.4.1 +matplotlib==2.2.5 +python-ldap==2.4.10 + +# Indirect dependencies +anyjson==0.3.3 +amqp==1.4.9 # <2.0 due to kombu 3.0.37 +backports.functools-lru-cache==1.6.1 +billiard==3.3.0.23 # <3.4 due to celery==3.1.25 +celery==3.1.25 # >=4 does not have celery.utils.timeutils +configparser==4.0.2 +confusable-homoglyphs==3.2.0 +contextlib2==0.6.0.post1 +cycler==0.10.0 +importlib-metadata==1.5.0 +kiwisolver==1.1.0 +kombu==3.0.37 # <3.1 due to celery==3.1.25 +numpy==1.16.6 +pathlib2==2.3.5 +pyparsing==2.4.6 +python-dateutil==2.8.1 +pytz==2019.3 +scandir==1.10.0 +six==1.14.0 +subprocess32==3.5.4 +vine==1.3.0 +zipp==1.1.0 -- cgit v1.2.3-65-gdbad