From ec3051292ee63e6d6de79a79fe9ccb45df4848ca Mon Sep 17 00:00:00 2001 From: Evili del Rio <erio@iri.upc.edu> Date: Wed, 31 Oct 2018 10:39:40 +0100 Subject: [PATCH] Initial import --- .dockerignore | 2 ++ Dockerfile | 20 ++++++++++++++++++++ README.md | 4 ++++ entrypoint.sh | 26 ++++++++++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100755 entrypoint.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4a246ec --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +Dockerfile +.dockerignore diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c4c14b7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM python:alpine +ARG django_version=1.11 +ARG dev_packages="gcc g++ postgresql-dev" +ADD ./entrypoint.sh / + +VOLUME /static + +WORKDIR /app + +RUN apk update && \ + apk add bash git \ + ${dev_packages} && \ + DJANGO_VERSION=$(echo ${django_version} | \ + awk -F. '{bump=$NF+1;for(i=1;i<NF;i++){printf("%s.",$i)};printf("%s",bump)}') && \ + pip install "Django<=${DJANGO_VERSION}" gunicorn \ + psycopg2-binary psycopg2 mysql-connector \ + django-heroku whitenoise[brotli] && \ + apk del ${dev_packages} + +ENTRYPOINT [ "/entrypoint.sh" ] diff --git a/README.md b/README.md index 6d2dd9f..794afc4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # docker-django +A docker image to execute Django apps. It uses: + +* An environment variable GIT_URL to retrieve the project +* django-heroku to reconfigure settings via environment variable. diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..3f2c8d5 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +printenv +set -x +git clone ${GIT_URL} . +pip install -r requirements.txt --no-input + +DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-$(basename ${WSGI_MODULE} .wsgi).settings} + +# Override static content +cat > settings.py <<EOF +from ${DJANGO_SETTINGS_MODULE} import * +STATIC_ROOT='/static' +EOF + +export DJANGO_SETTINGS_MODULE=settings + +python manage.py collectstatic --no-input + +python manage.py migrate + +if [ -z "${WSGI_MODULE}" ] +then + export WSGI_MODULE=$(basename $(dirname $(find . -name wsgi.py | head -1))).wsgi +fi + +gunicorn --log-level=INFO ${WSGI_MODULE} $* -- GitLab