diff --git a/Dockerfile b/Dockerfile
index e6a7ea0b148347395aa0c5c1f4ba7c78f959a6e6..e588a372cde57808b9dd455fc902ae487e09b248 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,18 +1,30 @@
-# pull official base image
-FROM python:3.6.9
+FROM python:3.6-alpine
 
-# set environment varibles
-ENV PYTHONDONTWRITEBYTECODE 1
-ENV PYTHONUNBUFFERED 1
 
-# set work directory
-WORKDIR /opaque
+RUN apk add build-base
 
-# Copy the current directory contents into the container at /daemon
-COPY . /opaque
 
-# Install requirements
-RUN pip install --trusted-host pypi.python.org -r requirements.txt
+RUN adduser -D opaque
+USER opaque
 
-# set permissions for entrypoint
-RUN chmod a+x flask-entrypoint.sh
+
+WORKDIR /home/opaque
+
+
+COPY app app
+COPY migrations migrations
+COPY opaque.py config.py ./
+COPY requirements.txt requirements.txt
+
+
+RUN python -m venv venv && \
+    venv/bin/pip install -r requirements.txt
+
+
+COPY docker-entrypoint.sh /usr/local/bin/
+
+
+EXPOSE 5000
+
+
+ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100755
index 0000000000000000000000000000000000000000..535d86a0675c5438727ca300658882c64452364a
--- /dev/null
+++ b/docker-entrypoint.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# If no argument is given, start Opaque
+if [ $# -eq 0 ]
+then
+  venv/bin/python opaque.py
+else
+  if [[ $1 == "--create-db" ]]
+  then
+    flask db init
+    flask db upgrade
+  fi
+fi
diff --git a/flask-entrypoint.sh b/flask-entrypoint.sh
deleted file mode 100644
index ed4b193f9a836d4177495fc483e909972058693b..0000000000000000000000000000000000000000
--- a/flask-entrypoint.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash -x
-
-python opaque.py
diff --git a/opaque.py b/opaque.py
index 3f8483afdbdc32c6be9ad16067663ca12f5b616d..8d4b01010a64cea0f553c3a81f384a6ec9e7ea86 100644
--- a/opaque.py
+++ b/opaque.py
@@ -1,7 +1,5 @@
 import eventlet
 eventlet.monkey_patch()
-from dotenv import load_dotenv
-load_dotenv()
 from app import create_app, db, socketio
 from app.models import Corpus, User, Role, Permission, Job
 from flask_migrate import Migrate
diff --git a/requirements.txt b/requirements.txt
index 2592d0010576f6165ac1f5235eb52a455bcb4a59..19d3e6ed93d37026f855d3a4e279d2a1b9a10125 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,5 +8,4 @@ Flask-SQLAlchemy
 Flask-Table
 Flask-WTF
 jsonpatch
-python-dotenv
 redis