From 99747257b01af473541079a1d5cb2de9ef5bf3da Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Sat, 13 Jul 2019 12:37:58 +0200 Subject: [PATCH] split the requirements and settings --- Dockerfile | 3 +-- docker-compose.yml | 4 ++-- .../network_inventory/settings/__init__.py | 0 .../{settings.py => settings/base.py} | 22 ------------------ .../network_inventory/settings/docker.py | 23 +++++++++++++++++++ .../network_inventory/settings/local.py | 19 +++++++++++++++ .../network_inventory/settings/production.py | 22 ++++++++++++++++++ requirements.txt => requirements/base.txt | 3 --- requirements/docker.txt | 5 ++++ requirements/local.txt | 6 +++++ requirements/production.txt | 3 +++ run.sh | 6 +++++ setup.sh | 3 --- 13 files changed, 87 insertions(+), 32 deletions(-) create mode 100644 network_inventory/network_inventory/settings/__init__.py rename network_inventory/network_inventory/{settings.py => settings/base.py} (85%) create mode 100644 network_inventory/network_inventory/settings/docker.py create mode 100644 network_inventory/network_inventory/settings/local.py create mode 100644 network_inventory/network_inventory/settings/production.py rename requirements.txt => requirements/base.txt (60%) create mode 100644 requirements/docker.txt create mode 100644 requirements/local.txt create mode 100644 requirements/production.txt create mode 100755 run.sh delete mode 100755 setup.sh diff --git a/Dockerfile b/Dockerfile index 96050e2..cda9762 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,5 +3,4 @@ ENV PYTHONUNBUFFERED 1 ADD . /code WORKDIR /code RUN pip install wheel -RUN pip install -r requirements.txt -WORKDIR /code/network_inventory +RUN pip install -r requirements/docker.txt diff --git a/docker-compose.yml b/docker-compose.yml index f849436..7996f48 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,12 +13,12 @@ services: web: build: . - command: python manage.py runserver 0.0.0.0:8000 + command: ./run.sh network_inventory.settings.docker volumes: - .:/code ports: - "8000:8000" environment: - - DJANGO_SETTINGS_MODULE=network_inventory.settings + - DJANGO_SETTINGS_MODULE=network_inventory.settings.local depends_on: - db diff --git a/network_inventory/network_inventory/settings/__init__.py b/network_inventory/network_inventory/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/network_inventory/network_inventory/settings.py b/network_inventory/network_inventory/settings/base.py similarity index 85% rename from network_inventory/network_inventory/settings.py rename to network_inventory/network_inventory/settings/base.py index 228e1d1..4c343e4 100644 --- a/network_inventory/network_inventory/settings.py +++ b/network_inventory/network_inventory/settings/base.py @@ -19,18 +19,6 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'kzx(i9^@*g^cgp(_3052%*1d%zyu^2z_@pgso5!_q@jb-j%4m=' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [ - 'localhost', - '127.0.0.1', -] - - # Application definition INSTALLED_APPS = [ @@ -75,16 +63,6 @@ TEMPLATES = [ WSGI_APPLICATION = 'network_inventory.wsgi.application' -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'postgres', - 'USER': 'postgres', - 'HOST': 'db', # set in docker-compose.yml - 'PORT': 5432 # default postgres port - } -} - # Password validation # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators diff --git a/network_inventory/network_inventory/settings/docker.py b/network_inventory/network_inventory/settings/docker.py new file mode 100644 index 0000000..af73ea9 --- /dev/null +++ b/network_inventory/network_inventory/settings/docker.py @@ -0,0 +1,23 @@ +from .base import * + +ALLOWED_HOSTS = [ + 'localhost', + '127.0.0.1', +] + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'development_key' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'db', + 'PORT': 5432, + } +} + diff --git a/network_inventory/network_inventory/settings/local.py b/network_inventory/network_inventory/settings/local.py new file mode 100644 index 0000000..e850d37 --- /dev/null +++ b/network_inventory/network_inventory/settings/local.py @@ -0,0 +1,19 @@ +from .base import * + +ALLOWED_HOSTS = [ + 'localhost', + '127.0.0.1', +] + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'development_key' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} diff --git a/network_inventory/network_inventory/settings/production.py b/network_inventory/network_inventory/settings/production.py new file mode 100644 index 0000000..7c151b9 --- /dev/null +++ b/network_inventory/network_inventory/settings/production.py @@ -0,0 +1,22 @@ +from .base import * + +ALLOWED_HOSTS = [ + 'inventory.2li.local', +] + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'kzx(i9^@*g^cgp(_3052%*1d%zyu^2z_@pgso5!_q@jb-j%4m=' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = False + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'db', + 'PORT': 5432, + } +} + diff --git a/requirements.txt b/requirements/base.txt similarity index 60% rename from requirements.txt rename to requirements/base.txt index f09a9ea..0fbb131 100644 --- a/requirements.txt +++ b/requirements/base.txt @@ -2,7 +2,4 @@ wheel Django==2.2 pyaml pytz -psycopg2 django-guardian -pytest -pytest-django diff --git a/requirements/docker.txt b/requirements/docker.txt new file mode 100644 index 0000000..f2c5392 --- /dev/null +++ b/requirements/docker.txt @@ -0,0 +1,5 @@ +-r base.txt + +pytest +pytest-django +psycopg2 diff --git a/requirements/local.txt b/requirements/local.txt new file mode 100644 index 0000000..b89a1d1 --- /dev/null +++ b/requirements/local.txt @@ -0,0 +1,6 @@ +-r base.txt + +pytest +pytest-django +pytest-cov +pep8 \ No newline at end of file diff --git a/requirements/production.txt b/requirements/production.txt new file mode 100644 index 0000000..e7c6ff7 --- /dev/null +++ b/requirements/production.txt @@ -0,0 +1,3 @@ +-r base.txt + +psycopg2 \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..8aaa0e6 --- /dev/null +++ b/run.sh @@ -0,0 +1,6 @@ +#!/bin/bash +cd network_inventory +python manage.py migrate --settings=$1 +python manage.py loaddata inventory --settings=$1 +python manage.py shell -c "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'admin@example.com', 'password')" --settings=$1 +python manage.py runserver 0.0.0.0:8000 --settings=$1 \ No newline at end of file diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 48a66a3..0000000 --- a/setup.sh +++ /dev/null @@ -1,3 +0,0 @@ -docker-compose run web python manage.py migrate -docker-compose run web python manage.py loaddata inventory -docker-compose run web ./manage.py shell -c "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'admin@example.com', 'password')" \ No newline at end of file