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