enable translations; environment config; heavily expanded dockerfile; dev docker-compose
This commit is contained in:
		
							parent
							
								
									0fcf3a5dae
								
							
						
					
					
						commit
						4e9fd4abed
					
				| 
						 | 
					@ -6,9 +6,8 @@ ENV PYTHONDONTWRITEBYTECODE 1
 | 
				
			||||||
ENV PYTHONUNBUFFERED 1
 | 
					ENV PYTHONUNBUFFERED 1
 | 
				
			||||||
EXPOSE 8000
 | 
					EXPOSE 8000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# psycopg2 dependencies
 | 
					 | 
				
			||||||
RUN apk update \
 | 
					RUN apk update \
 | 
				
			||||||
    && apk add postgresql-dev gcc python3-dev musl-dev
 | 
					    && apk add postgresql-dev gcc python3-dev musl-dev gettext postgresql-client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# install dependencies
 | 
					# install dependencies
 | 
				
			||||||
ADD ./requirements.txt .
 | 
					ADD ./requirements.txt .
 | 
				
			||||||
| 
						 | 
					@ -20,4 +19,8 @@ RUN addgroup -S portier && adduser -S portier -G portier
 | 
				
			||||||
# add code
 | 
					# add code
 | 
				
			||||||
ADD --chown=portier:portier . /app
 | 
					ADD --chown=portier:portier . /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN ./manage.py collectstatic --noinput --link
 | 
				
			||||||
 | 
					RUN ./manage.py compilemessages
 | 
				
			||||||
 | 
					USER portier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CMD ["/app/start.sh", "migrate_start"]
 | 
					CMD ["/app/start.sh", "migrate_start"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					version: '2.4'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  web:
 | 
				
			||||||
 | 
					    build: .
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 8000:8000
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - postgres
 | 
				
			||||||
 | 
					      - redis
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      DEBUG: 1
 | 
				
			||||||
 | 
					      SECRET_KEY: "D4mn1t_Ch4nG3_M3!1!!"
 | 
				
			||||||
 | 
					      SQL_ENGINE: django.db.backends.postgresql
 | 
				
			||||||
 | 
					      SQL_USER: portier
 | 
				
			||||||
 | 
					      SQL_PASSWORD: portier
 | 
				
			||||||
 | 
					      SQL_DATABASE: portier
 | 
				
			||||||
 | 
					      SQL_HOST: postgres
 | 
				
			||||||
 | 
					      SQL_PORT: 5432
 | 
				
			||||||
 | 
					      REDIS_HOST: redis
 | 
				
			||||||
 | 
					      REDIS_PORT: 6379
 | 
				
			||||||
 | 
					  redis:
 | 
				
			||||||
 | 
					    image: redis:5-alpine
 | 
				
			||||||
 | 
					  postgres:
 | 
				
			||||||
 | 
					    image: postgres:11.7-alpine
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      POSTGRES_PASSWORD: "portier"
 | 
				
			||||||
 | 
					      POSTGRES_USER: "portier"
 | 
				
			||||||
 | 
					      POSTGRES_DB: "portier"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					# SOME DESCRIPTIVE TITLE.
 | 
				
			||||||
 | 
					# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 | 
				
			||||||
 | 
					# This file is distributed under the same license as the PACKAGE package.
 | 
				
			||||||
 | 
					# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					msgid ""
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
 | 
					"POT-Creation-Date: 2020-04-20 20:58+0000\n"
 | 
				
			||||||
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
 | 
					"Language: \n"
 | 
				
			||||||
 | 
					"MIME-Version: 1.0\n"
 | 
				
			||||||
 | 
					"Content-Type: text/plain; charset=UTF-8\n"
 | 
				
			||||||
 | 
					"Content-Transfer-Encoding: 8bit\n"
 | 
				
			||||||
 | 
					"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: srs/models.py:9
 | 
				
			||||||
 | 
					msgid "srs_application_name"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					# SOME DESCRIPTIVE TITLE.
 | 
				
			||||||
 | 
					# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 | 
				
			||||||
 | 
					# This file is distributed under the same license as the PACKAGE package.
 | 
				
			||||||
 | 
					# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#, fuzzy
 | 
				
			||||||
 | 
					msgid ""
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					"Project-Id-Version: PACKAGE VERSION\n"
 | 
				
			||||||
 | 
					"Report-Msgid-Bugs-To: \n"
 | 
				
			||||||
 | 
					"POT-Creation-Date: 2020-04-20 20:58+0000\n"
 | 
				
			||||||
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
 | 
					"Language: \n"
 | 
				
			||||||
 | 
					"MIME-Version: 1.0\n"
 | 
				
			||||||
 | 
					"Content-Type: text/plain; charset=UTF-8\n"
 | 
				
			||||||
 | 
					"Content-Transfer-Encoding: 8bit\n"
 | 
				
			||||||
 | 
					"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: srs/models.py:9
 | 
				
			||||||
 | 
					msgid "srs_application_name"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
| 
						 | 
					@ -20,12 +20,11 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 | 
				
			||||||
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
 | 
					# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# SECURITY WARNING: keep the secret key used in production secret!
 | 
					# SECURITY WARNING: keep the secret key used in production secret!
 | 
				
			||||||
SECRET_KEY = '-xcxbgd8w&w&nv0-e!5=kd%u5esjt07$h5*+$goica9nc$l!(9'
 | 
					SECRET_KEY = os.environ.get("SECRET_KEY", default="CHANGE_ME!")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# SECURITY WARNING: don't run with debug turned on in production!
 | 
					# SECURITY WARNING: don't run with debug turned on in production!
 | 
				
			||||||
DEBUG = True
 | 
					DEBUG = int(os.environ.get("DEBUG", default=0))
 | 
				
			||||||
 | 
					ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", default="*").split(" ")
 | 
				
			||||||
ALLOWED_HOSTS = ['*']
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Application definition
 | 
					# Application definition
 | 
				
			||||||
| 
						 | 
					@ -76,9 +75,13 @@ WSGI_APPLICATION = 'portier.wsgi.application'
 | 
				
			||||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
 | 
					# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DATABASES = {
 | 
					DATABASES = {
 | 
				
			||||||
    'default': {
 | 
					    "default": {
 | 
				
			||||||
        'ENGINE': 'django.db.backends.sqlite3',
 | 
					        "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
 | 
				
			||||||
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 | 
					        "NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
 | 
				
			||||||
 | 
					        "USER": os.environ.get("SQL_USER", "portier"),
 | 
				
			||||||
 | 
					        "PASSWORD": os.environ.get("SQL_PASSWORD", "portier"),
 | 
				
			||||||
 | 
					        "HOST": os.environ.get("SQL_HOST", "postgres"),
 | 
				
			||||||
 | 
					        "PORT": os.environ.get("SQL_PORT", "5432"),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -120,10 +123,12 @@ USE_TZ = True
 | 
				
			||||||
# https://docs.djangoproject.com/en/3.0/howto/static-files/
 | 
					# https://docs.djangoproject.com/en/3.0/howto/static-files/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STATIC_URL = '/static/'
 | 
					STATIC_URL = '/static/'
 | 
				
			||||||
 | 
					STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CELERY_BROKER_URL = 'redis://localhost:6379'
 | 
					# Celery
 | 
				
			||||||
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
 | 
					CELERY_BROKER_URL = "redis://{}:{}".format(os.environ.get('REDIS_HOST', default='redis'), os.environ.get('REDIS_PORT', default=6379))
 | 
				
			||||||
 | 
					CELERY_RESULT_BACKEND = "redis://{}:{}".format(os.environ.get('REDIS_HOST', default='redis'), os.environ.get('REDIS_PORT', default=6379))
 | 
				
			||||||
CELERY_ACCEPT_CONTENT = ['application/json']
 | 
					CELERY_ACCEPT_CONTENT = ['application/json']
 | 
				
			||||||
CELERY_RESULT_SERIALIZER = 'json'
 | 
					CELERY_RESULT_SERIALIZER = 'json'
 | 
				
			||||||
CELERY_TASK_SERIALIZER = 'json'
 | 
					CELERY_TASK_SERIALIZER = 'json'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
django>=3.0
 | 
					django>=3.0
 | 
				
			||||||
celery>=4.4
 | 
					celery>=4.4
 | 
				
			||||||
gunicorn>=20
 | 
					gunicorn>=20
 | 
				
			||||||
 | 
					psycopg2-binary
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,12 @@
 | 
				
			||||||
from django.db import models
 | 
					from django.db import models
 | 
				
			||||||
 | 
					from django.utils.translation import gettext as _
 | 
				
			||||||
import uuid
 | 
					import uuid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import signals
 | 
					from . import signals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Application(models.Model):
 | 
					class Application(models.Model):
 | 
				
			||||||
    name = models.CharField(max_length=100, unique=True)
 | 
					    name = models.CharField(max_length=100, unique=True, help_text=_("srs_application_name"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return self.name
 | 
					        return self.name
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								start.sh
								
								
								
								
							
							
						
						
									
										24
									
								
								start.sh
								
								
								
								
							| 
						 | 
					@ -5,15 +5,39 @@ migrate() {
 | 
				
			||||||
  python manage.py migrate
 | 
					  python manage.py migrate
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wait_for_redis() {
 | 
				
			||||||
 | 
					  echo "Trying to connect to redis at ${REDIS_HOST:-redis}:${REDIS_PORT:-6379} ..."
 | 
				
			||||||
 | 
					  while ! nc -z ${REDIS_HOST:-redis} ${REDIS_PORT:-6379};
 | 
				
			||||||
 | 
					  do
 | 
				
			||||||
 | 
					    sleep 1;
 | 
				
			||||||
 | 
					  done;
 | 
				
			||||||
 | 
					  echo "Successfully connected to redis. Continuing.";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wait_for_database() {
 | 
				
			||||||
 | 
					  echo "Trying to connect to database at ${SQL_HOST:-postgres}:${SQL_PORT:-5432} ..."
 | 
				
			||||||
 | 
					  while ! nc -z ${SQL_HOST:-postgres} ${SQL_PORT:-5432};
 | 
				
			||||||
 | 
					  do
 | 
				
			||||||
 | 
					    sleep 1;
 | 
				
			||||||
 | 
					  done;
 | 
				
			||||||
 | 
					  echo "Successfully connected to database. Continuing.";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case $1 in
 | 
					case $1 in
 | 
				
			||||||
  "create_superuser" )
 | 
					  "create_superuser" )
 | 
				
			||||||
 | 
					    wait_for_redis
 | 
				
			||||||
 | 
					    wait_for_database
 | 
				
			||||||
    python manage.py createsuperuser --no-input --username "${ADMIN_USER:-admin}" --email "${ADMIN_EMAIL:-post@chaoswest.tv}"
 | 
					    python manage.py createsuperuser --no-input --username "${ADMIN_USER:-admin}" --email "${ADMIN_EMAIL:-post@chaoswest.tv}"
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
  "migrate_start" )
 | 
					  "migrate_start" )
 | 
				
			||||||
 | 
					    wait_for_redis
 | 
				
			||||||
 | 
					    wait_for_database
 | 
				
			||||||
    migrate
 | 
					    migrate
 | 
				
			||||||
    gunicorn -w 4 --bind 0.0.0.0:${EXPOSE_PORT:-8000} portier.wsgi
 | 
					    gunicorn -w 4 --bind 0.0.0.0:${EXPOSE_PORT:-8000} portier.wsgi
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
  "only_start" )
 | 
					  "only_start" )
 | 
				
			||||||
 | 
					    wait_for_redis
 | 
				
			||||||
 | 
					    wait_for_database
 | 
				
			||||||
    gunicorn -w 4 --bind 0.0.0.0:${EXPOSE_PORT:-8000} portier.wsgi
 | 
					    gunicorn -w 4 --bind 0.0.0.0:${EXPOSE_PORT:-8000} portier.wsgi
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue