From 11cf7e7bb7bbed149182d9b4036dd020d480287c Mon Sep 17 00:00:00 2001
From: Dominik George <nik@naturalnet.de>
Date: Thu, 14 Nov 2019 00:21:54 +0100
Subject: [PATCH] Add Docker definition.

---
 Dockerfile           | 40 ++++++++++++++++++++++++++++++++++++++++
 docker-entrypoint.sh | 14 ++++++++++++++
 2 files changed, 54 insertions(+)
 create mode 100644 Dockerfile
 create mode 100755 docker-entrypoint.sh

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..552fd1bae
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,40 @@
+FROM python:3.8-buster
+
+ENV PYTHONUNBUFFERED=1
+ENV PYTHONDONTWRITEBYTECODE 1
+ENV PIP_DEFAULT_TIMEOUT=100
+ENV PIP_DISABLE_PIP_VERSION_CHECK=1
+ENV PIP_NO_CACHE_DIR=1
+ENV POETRY_VERSION=1.0.0b3
+
+WORKDIR /usr/src/app
+
+COPY . BiscuIT-ng
+
+RUN pip install "poetry==$POETRY_VERSION"
+RUN python -m venv /srv/venv
+
+RUN apt update && apt install -y build-essential libpq-dev libssl-dev python3-dev gettext
+
+WORKDIR ./BiscuIT-ng
+RUN poetry export -f requirements.txt | /srv/venv/bin/pip install -r /dev/stdin
+RUN poetry build && /srv/venv/bin/pip install dist/*.whl
+
+WORKDIR /usr/src/app/BiscuIT-ng
+
+RUN apt install -y libjs-bootstrap4 fonts-font-awesome libjs-jquery libjs-popper.js libjs-jquery-datatables
+
+RUN mkdir /srv/media /srv/static /var/backups/biscuit
+
+ENV BISCUIT_static.root=/srv/static
+ENV BISCUIT_media.root=/srv/media
+
+RUN /srv/venv/bin/python manage.py collectstatic --no-input --clear
+RUN /srv/venv/bin/python manage.py compilemessages
+
+COPY ./docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+
+RUN /srv/venv/bin/pip install gunicorn
+
+EXPOSE 8000
+ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100755
index 000000000..693a207d1
--- /dev/null
+++ b/docker-entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+GUNICORN_BIND=${GUNICORN_BIND:-0.0.0.0:8000}
+
+while ! nc -z ${BISCUIT_database.host} 5432; do
+    sleep 0.1
+done
+
+source /srv/venv/bin/activate
+
+python manage.py flush --no-input
+python manage.py migrate
+
+exec /srv/venv/bin/gunicorn biscuit.core.wsgi --bind ${GUNICORN_BIND}
-- 
GitLab