From 8d7f053a4ca6d33dba5d109dd45ba8e112c3985a Mon Sep 17 00:00:00 2001
From: Stephan Porada <sporada@uni-bielefeld.de>
Date: Thu, 5 Sep 2019 14:43:36 +0200
Subject: [PATCH] Add postgresql database

---
 .gitignore         |  1 +
 config.py          | 14 +++++++++++---
 docker-compose.yml | 30 +++++++++++++++++++++++++++++-
 requirements.txt   |  1 +
 4 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index b9fb041b..fc9b731c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@ data_dev.sqlite
 migrations
 venv
 .env
+.env_database
 __pycache__
diff --git a/config.py b/config.py
index 96aaa6d1..1b340301 100644
--- a/config.py
+++ b/config.py
@@ -24,8 +24,16 @@ class Config:
 
 class DevelopmentConfig(Config):
     DEBUG = True
-    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir,
-                                                          'data_dev.sqlite')
+    # SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir,
+    #                                                       'data_dev.sqlite')
+    SQLALCHEMY_DATABASE_URI = \
+        'postgresql+psycopg2://{user}:{passwd}@{host}:{port}/{db}'.format(
+            user=os.environ.get('POSTGRES_USER'),
+            passwd=os.environ.get('POSTGRES_PASSWORD'),
+            host=os.environ.get('POSTGRES_HOST'),
+            port=os.environ.get('POSTGRES_PORT'),
+            db=os.environ.get('POSTGRES_DB_NAME'))
+    print(SQLALCHEMY_DATABASE_URI)
 
 
 class TestingConfig(Config):
@@ -41,7 +49,7 @@ class TestingConfig(Config):
 config = {
     'development': DevelopmentConfig,
     'testing': TestingConfig,
-    # 'production': ProductionConfig,
+    #'production': ProductionConfig,
 
     'default': DevelopmentConfig
 }
diff --git a/docker-compose.yml b/docker-compose.yml
index 996d29a2..18e5575c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,12 +3,40 @@ version: '3.7'
 services:
   web:
     build: .
-    container_name: web_flask_opaque
+    container_name: opaque_flask
     image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque
     volumes:
       - .:/opaque
+      - $HOME/opaque_test:/home/compute/mnt/opaque
     env_file:
       - .env
+      - .env_database
     ports:
       - 5000:5000
+    depends_on:
+      - db
+    links:
+      - db
     command: bash flask-entrypoint.sh
+  daemon:
+    container_name: opaque_daemon
+    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/daemon_opaque
+    network_mode: "host"
+    volumes:
+      - /home/stephan/Repos/own/opaque/data_dev.sqlite:/daemon/db/data_dev.sqlite
+      - $HOME/.docker/config.json:/root/.docker/config.json
+    depends_on:
+      - db
+  db:
+    container_name: opaque_db
+    image: postgres:11.5
+    env_file:
+      - .env_database
+    ports:
+      - 5432:5432
+    volumes:
+      - postgres_data:/var/lib/postgresql/data
+    restart: always
+
+volumes:
+  postgres_data:
diff --git a/requirements.txt b/requirements.txt
index 2592d001..3fce165f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,5 +8,6 @@ Flask-SQLAlchemy
 Flask-Table
 Flask-WTF
 jsonpatch
+psycopg2
 python-dotenv
 redis
-- 
GitLab