[Patchew-devel] [PATCH 6/6] server: Use postgres in Docker deploy
Fam Zheng
famz at redhat.com
Wed Oct 31 01:28:56 UTC 2018
Signed-off-by: Fam Zheng <famz at redhat.com>
---
patchew/settings.py | 39 +++++++++++--------
requirements.txt | 1 +
scripts/playbooks/deploy-servers.yml | 1 +
scripts/playbooks/templates/docker.service.j2 | 1 +
4 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/patchew/settings.py b/patchew/settings.py
index 16f60a5..b11da54 100644
--- a/patchew/settings.py
+++ b/patchew/settings.py
@@ -98,21 +98,35 @@ WSGI_APPLICATION = 'patchew.wsgi.application'
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
def env_detect():
- if "PATCHEW_DATA_DIR" in os.environ:
+ if "PATCHEW_DB_PORT_5432_TCP_ADDR" in os.environ:
# Docker deployment
- return False, os.environ.get("PATCHEW_DATA_DIR")
+ return (False, os.environ.get("PATCHEW_DATA_DIR"),
+ {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql',
+ 'NAME': 'patchew',
+ 'USER': 'patchew',
+ 'PASSWORD': 'patchew',
+ 'HOST': os.environ.get('PATCHEW_DB_PORT_5432_TCP_ADDR'),
+ 'PORT': '5432',
+ }
+ })
elif "VIRTUAL_ENV" in os.environ or os.environ.get("PATCHEW_DEBUG", False):
# Development setup
- return True, os.path.join(os.environ.get("VIRTUAL_ENV",
- "/var/tmp/patchew-dev"),
- "data")
- elif os.environ.get("PATCHEW_TEST"):
- # Test environment
- return True, os.environ.get("PATCHEW_TEST_DATA_DIR")
+ data_dir = os.path.join(os.environ.get("VIRTUAL_ENV",
+ "/var/tmp/patchew-dev"),
+ "data")
+ return (True, data_dir,
+ {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': os.path.join(data_dir, "patchew-db.sqlite3"),
+ }
+ })
else:
raise Exception("Unknown running environment")
-DEBUG, DATA_DIR = env_detect()
+DEBUG, DATA_DIR, DATABASES = env_detect()
# In production environments, we run in a container, behind nginx, which should
# filter the allowed host names. So be a little flexible here
@@ -135,13 +149,6 @@ MEDIA_URL = "/media/"
if not os.path.isdir(MEDIA_ROOT):
os.makedirs(MEDIA_ROOT)
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(DATA_DIR, "patchew-db.sqlite3"),
- }
-}
-
# If the PATCHEW_ADMIN_EMAIL env var is set, let Django send error reporting to
# the address.
admin_email = os.environ.get("PATCHEW_ADMIN_EMAIL")
diff --git a/requirements.txt b/requirements.txt
index aa89c4c..59c9480 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,3 +8,4 @@ jsonfield2 >= 3.0, < 4.0
drf-nested-routers
coreapi-cli
pyyaml
+psycopg2
diff --git a/scripts/playbooks/deploy-servers.yml b/scripts/playbooks/deploy-servers.yml
index 933d065..7c6281e 100644
--- a/scripts/playbooks/deploy-servers.yml
+++ b/scripts/playbooks/deploy-servers.yml
@@ -16,6 +16,7 @@
base_dir: "/data/{{ instance_name }}"
src_dir: "{{ base_dir }}/src"
data_dir: "{{ base_dir }}/data"
+ docker_run_args: "--link {{ instance_name }}-db"
tasks:
- name: Create data dir
file:
diff --git a/scripts/playbooks/templates/docker.service.j2 b/scripts/playbooks/templates/docker.service.j2
index afd5df1..85dd9d2 100644
--- a/scripts/playbooks/templates/docker.service.j2
+++ b/scripts/playbooks/templates/docker.service.j2
@@ -10,6 +10,7 @@ ExecStartPre=-/usr/bin/docker stop {{ instance_name }} ; -/usr/bin/docker rm {{
ExecStart=/usr/bin/docker run --privileged --name {{ instance_name }} \
-v {{ data_dir }}:/data/patchew:rw \
-e PATCHEW_DATA_DIR=/data/patchew \
+ {{ docker_run_args | default() }} \
patchew:{{ instance_name }}
ExecStop=/usr/bin/docker stop -t 10 {{ instance_name }}
RestartSec=60
--
2.17.2
More information about the Patchew-devel
mailing list