diff --git a/.flaskenv b/.flaskenv
deleted file mode 100644
index 47093cdaf93d07580a062a158c87bbed2c7fa72e..0000000000000000000000000000000000000000
--- a/.flaskenv
+++ /dev/null
@@ -1,2 +0,0 @@
-### Flask ###
-FLASK_APP=opaque.py
diff --git a/.gitignore b/.gitignore
index fc9b731cf6550a53e6f32b0d0e93b9f6e8903f6d..682148e71683279c130da6f7ab4c42004e844b25 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,4 @@
-data_dev.sqlite
 migrations
-venv
-.env
-.env_database
+opaque_database_env
+opaque_env
 __pycache__
diff --git a/Dockerfile b/Dockerfile
index e588a372cde57808b9dd455fc902ae487e09b248..b474e068805a57ebbf8a439740e1e34ae5a12e43 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,9 @@
 FROM python:3.6-alpine
 
 
-RUN apk add build-base
+RUN apk add \
+    build-base \
+    postgresql-dev
 
 
 RUN adduser -D opaque
@@ -13,10 +15,13 @@ WORKDIR /home/opaque
 
 COPY app app
 COPY migrations migrations
-COPY opaque.py config.py ./
+COPY config.py opaque.py ./
 COPY requirements.txt requirements.txt
 
 
+ENV FLASK_APP=opaque.py
+
+
 RUN python -m venv venv && \
     venv/bin/pip install -r requirements.txt
 
diff --git a/config.py b/config.py
index fb7ff521e13cfb34732f1c1ebf0fe092f61fa456..ed0dadbf6e9460adef8e95f2e3de5d45781986d7 100644
--- a/config.py
+++ b/config.py
@@ -28,32 +28,33 @@ class Config:
 class DevelopmentConfig(Config):
     ''' ### Flask ### '''
     DEBUG = True
-    # 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)
 
     ''' ### Flask-SQLAlchemy ### '''
-    SQLALCHEMY_DATABASE_URI = 'sqlite:///{}'.format(
-        os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                     'data_dev.sqlite')
+    SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@opaque_database/{}'.format(
+        os.environ.get('POSTGRES_USER'),
+        os.environ.get('POSTGRES_PASSWORD'),
+        os.environ.get('POSTGRES_DB_NAME')
     )
 
 
 class TestingConfig(Config):
+    ''' ### Flask ### '''
+    TESTING = True
+
     ''' ### Flask-SQLAlchemy ### '''
     SQLALCHEMY_DATABASE_URI = 'sqlite://'
 
+    ''' ### Flask-WTF ### '''
+    WTF_CSRF_ENABLED = False
+
 
 class ProductionConfig(Config):
     ''' ### Flask-SQLAlchemy ### '''
-    SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
+    SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@opaque_database/{}'.format(
+        os.environ.get('POSTGRES_USER'),
+        os.environ.get('POSTGRES_PASSWORD'),
+        os.environ.get('POSTGRES_DB_NAME')
+    )
 
 
 config = {
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 535d86a0675c5438727ca300658882c64452364a..b317cda448db48a5737a975cff75dd5e7421c5ea 100755
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -1,13 +1,15 @@
-#!/bin/bash
+#!/bin/sh
 
-# If no argument is given, start Opaque
 if [ $# -eq 0 ]
 then
+  # If no argument is given, start Opaque
   venv/bin/python opaque.py
 else
   if [[ $1 == "--create-db" ]]
   then
+    source venv/bin/activate
     flask db init
     flask db upgrade
+    flask foo
   fi
 fi
diff --git a/opaque.py b/opaque.py
index 8d4b01010a64cea0f553c3a81f384a6ec9e7ea86..f0f2fc8d023f14261a2f9effaf76ba9698e3da22 100644
--- a/opaque.py
+++ b/opaque.py
@@ -28,5 +28,10 @@ def test():
     unittest.TextTestRunner(verbosity=2).run(tests)
 
 
+@app.cli.command()
+def foo():
+    Role.insert_roles()
+
+
 if __name__ == '__main__':
     socketio.run(app, host='0.0.0.0')
diff --git a/opaque_database_env_example b/opaque_database_env_example
new file mode 100644
index 0000000000000000000000000000000000000000..5ad5b2b6b4d191cf7972d5d75d1d3a6498e0ea0a
--- /dev/null
+++ b/opaque_database_env_example
@@ -0,0 +1,3 @@
+POSTGRES_DB_NAME=opaque
+POSTGRES_USER=opaque
+POSTGRES_PASSWORD=opaque
diff --git a/.env_example b/opaque_env_example
similarity index 84%
rename from .env_example
rename to opaque_env_example
index f328a3ed246062bbb393b64f6aff72a80b68a311..274698b77e8c4fadccff3631e2cb44ae08bc0088 100644
--- a/.env_example
+++ b/opaque_env_example
@@ -12,6 +12,3 @@ MAIL_DEFAULT_SENDER=username@example.com
 
 ### Opaque ###
 OPAQUE_ADMIN=admin.opaque@example.com
-
-### Flask-SQLAlchemy ###
-# SQLALCHEMY_DATABASE_URI=
diff --git a/requirements.txt b/requirements.txt
index 19d3e6ed93d37026f855d3a4e279d2a1b9a10125..f68e78f9a56da8a4d06424c201af1c7df4f4c6d0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,4 +8,5 @@ Flask-SQLAlchemy
 Flask-Table
 Flask-WTF
 jsonpatch
+psycopg2
 redis