From dfb8ca7145868dd5bfa80c785827f55690d7eac2 Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Sat, 25 Feb 2017 23:10:47 +0100 Subject: [PATCH] Use as docker image --- .dockerignore | 3 +++ Dockerfile | 25 +++++++++++++++++++++++++ bash/dashboard.env | 1 + bash/run-prod.sh | 2 ++ bash/update-refunds.sh | 30 ++++++++++++++++++++++++++++++ refunds/settings.py | 4 ++-- 6 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 bash/dashboard.env create mode 100644 bash/run-prod.sh create mode 100644 bash/update-refunds.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ffd676b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.venv-* +.git +.idea diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f35ea11 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3-alpine + +RUN apk add --no-cache tzdata && \ + cp /usr/share/zoneinfo/Europe/Paris /etc/localtime && \ + echo "Europe/Paris" > /etc/timezone + +RUN apk add --no-cache postgresql-dev gcc musl-dev + +WORKDIR /app + +COPY requirements.txt /app + +RUN pip3 install -r requirements.txt + +COPY . /app + +VOLUME /app/staticfiles + +ENV DATABASE_URL postgres://postgresql:postgresql@db:5432/dashboard + +EXPOSE 8000 + +RUN chmod +x bash/run-prod.sh + +CMD /app/bash/run-prod.sh diff --git a/bash/dashboard.env b/bash/dashboard.env new file mode 100644 index 0000000..14403f4 --- /dev/null +++ b/bash/dashboard.env @@ -0,0 +1 @@ +DATABASE_URL=postgres://user:password@host/dashboard diff --git a/bash/run-prod.sh b/bash/run-prod.sh new file mode 100644 index 0000000..46fee76 --- /dev/null +++ b/bash/run-prod.sh @@ -0,0 +1,2 @@ +#!/bin/sh +python3 manage.py migrate && python3 manage.py collectstatic --noinput && gunicorn refunds.wsgi -b 0.0.0.0:8000 --log-file - diff --git a/bash/update-refunds.sh b/bash/update-refunds.sh new file mode 100644 index 0000000..6028b2e --- /dev/null +++ b/bash/update-refunds.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -e +BASE_IMAGE="refunds" +REGISTRY="crocmagnon" +IMAGE="$REGISTRY/$BASE_IMAGE" +CID=$(docker ps | grep $IMAGE | awk '{print $1}') +docker pull $IMAGE + +for im in $CID +do + LATEST=`docker inspect --format "{{.Id}}" $IMAGE` + RUNNING=`docker inspect --format "{{.Image}}" $im` + NAME=`docker inspect --format '{{.Name}}' $im | sed "s/\///g"` + echo "Latest:" $LATEST + echo "Running:" $RUNNING + if [ "$RUNNING" != "$LATEST" ];then + echo "upgrading $NAME" + docker stop $NAME + docker rm -f $NAME + docker run \ + -v /opt/conf/www/$NAME:/app/staticfiles \ + --name $NAME \ + --env-file /opt/conf/environments/$NAME.env \ + --restart always \ + --net web \ + -d $IMAGE + else + echo "$NAME up to date" + fi +done diff --git a/refunds/settings.py b/refunds/settings.py index ae56e90..c356638 100644 --- a/refunds/settings.py +++ b/refunds/settings.py @@ -45,11 +45,11 @@ USE_X_FORWARDED_HOST = PROD # We don't want to redirect but throw an error if no SSL in prod. # See api.middleware.RejectHTTPMiddleware -SECURE_SSL_REDIRECT = ssl_required +# SECURE_SSL_REDIRECT = ssl_required SECRET_KEY = os.getenv('SECRET_KEY', '+)2m1(7!+5-p-iazefib&8i7+a4^pod(èer!éç"fn,uo5)jhem(1-bo#p') -ALLOWED_HOSTS = ['localhost', '.herokuapp.com', '.augendre.info'] +ALLOWED_HOSTS = ['localhost', '.herokuapp.com', '.augendre.info', 'refunds-web'] X_FRAME_OPTIONS = 'DENY'