commit:     f3cfe82d587d5efa73b828a1f69e3fa0136bdc1d
Author:     Sebastian Pipping <sping <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  8 18:40:50 2020 +0000
Commit:     Sebastian Pipping <sping <AT> gentoo <DOT> org>
CommitDate: Sun Feb  9 21:24:54 2020 +0000
URL:        https://gitweb.gentoo.org/proj/euscan.git/commit/?id=f3cfe82d

docker: Dockerize euscanwww (W.I.P.)

Signed-off-by: Sebastian Pipping <sping <AT> gentoo.org>

 Dockerfile           | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 docker-compose.yml   | 33 +++++++++++++++++++++++++
 docker-entrypoint.sh | 24 ++++++++++++++++++
 requirements.txt     | 42 +++++++++++++++++++++++++++++++
 4 files changed, 169 insertions(+)

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..c8e088d
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,70 @@
+# 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/
+COPY euscanwww/djeuscan/         /tmp/euscan/pym/djeuscan/
+COPY euscanwww/euscan_accounts/  /tmp/euscan/pym/euscan_accounts/
+COPY euscanwww/euscan_captcha/   /tmp/euscan/pym/euscan_captcha/
+COPY euscanwww/euscanwww/        /tmp/euscan/pym/euscanwww/
+
+COPY docker-entrypoint.sh  /root/
+
+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)'
+
+RUN rm -Rf /tmp/euscan/
+
+EXPOSE 55080
+ENTRYPOINT ["/root/docker-entrypoint.sh"]
+CMD []

diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..5bcec2f
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,33 @@
+# 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:?}
+    tty: true
+
+  celerycam:
+    depends_on:
+      - celeryd
+    image: ${COMPOSE_PROJECT_NAME}_celeryd:latest
+    environment:
+      DJANGO_SETTINGS_MODULE: euscanwww.settings
+      EUSCAN_SECRET_KEY: ${EUSCAN_SECRET_KEY:?}
+    command: django-admin celerycam
+    tty: true
+
+  celeryd:
+    build:
+      context: .
+    environment:
+      DJANGO_SETTINGS_MODULE: euscanwww.settings
+      EUSCAN_SECRET_KEY: ${EUSCAN_SECRET_KEY:?}
+    command: django-admin celeryd -B -E -l INFO
+    tty: true

diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100755
index 0000000..508d265
--- /dev/null
+++ b/docker-entrypoint.sh
@@ -0,0 +1,24 @@
+#! /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
+
+manage_py() {
+    django-admin "$@"
+}
+
+if [[ $# -gt 0 ]]; then
+    exec "$@"
+fi
+
+manage_py migrate
+
+exec manage_py runserver 0.0.0.0:55080

diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..8bfe7f6
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,42 @@
+# 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.7.6
+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
+South==0.7
+
+# 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

Reply via email to