From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 0A89F138350 for ; Sun, 9 Feb 2020 21:25:13 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3D10BE087C; Sun, 9 Feb 2020 21:25:12 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1A5D8E087C for ; Sun, 9 Feb 2020 21:25:12 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 051D534E880 for ; Sun, 9 Feb 2020 21:25:11 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 25D502A for ; Sun, 9 Feb 2020 21:25:09 +0000 (UTC) From: "Sebastian Pipping" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sebastian Pipping" Message-ID: <1581283494.f3cfe82d587d5efa73b828a1f69e3fa0136bdc1d.sping@gentoo> Subject: [gentoo-commits] proj/euscan:docker-compose--wip--expect-force-pushes commit in: / X-VCS-Repository: proj/euscan X-VCS-Files: Dockerfile docker-compose.yml docker-entrypoint.sh requirements.txt X-VCS-Directories: / X-VCS-Committer: sping X-VCS-Committer-Name: Sebastian Pipping X-VCS-Revision: f3cfe82d587d5efa73b828a1f69e3fa0136bdc1d X-VCS-Branch: docker-compose--wip--expect-force-pushes Date: Sun, 9 Feb 2020 21:25:09 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 08cc9e22-10c7-40f0-b541-17e1904305e0 X-Archives-Hash: 799cf3b8605034f35ec0616d5d82c992 commit: f3cfe82d587d5efa73b828a1f69e3fa0136bdc1d Author: Sebastian Pipping gentoo org> AuthorDate: Sat Feb 8 18:40:50 2020 +0000 Commit: Sebastian Pipping gentoo 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 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