aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Dockerfile67
-rw-r--r--docker-compose.yml44
-rwxr-xr-xdocker-entrypoint.sh20
-rw-r--r--requirements.txt41
4 files changed, 172 insertions, 0 deletions
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