diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..b00b223
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,23 @@
+FROM python:3.6-alpine
+
+RUN adduser -D microblog
+
+WORKDIR /home/microblog
+
+COPY requirements.txt requirements.txt
+RUN python -m venv venv
+RUN venv/bin/pip install -r requirements.txt
+RUN venv/bin/pip install gunicorn pymysql
+
+COPY app app
+COPY migrations migrations
+COPY microblog.py config.py boot.sh ./
+RUN chmod a+x boot.sh
+
+ENV FLASK_APP microblog.py
+
+RUN chown -R microblog:microblog ./
+USER microblog
+
+EXPOSE 5000
+ENTRYPOINT ["./boot.sh"]
diff --git a/boot.sh b/boot.sh
new file mode 100755
index 0000000..0f58ee3
--- /dev/null
+++ b/boot.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# this script is used to boot a Docker container
+source venv/bin/activate
+while true; do
+    flask db upgrade
+    if [[ "$?" == "0" ]]; then
+        break
+    fi
+    echo Deploy command failed, retrying in 5 secs...
+    sleep 5
+done
+flask translate compile
+exec gunicorn -b :5000 --access-logfile - --error-logfile - microblog:app
diff --git a/requirements.txt b/requirements.txt
index 1296863..4fb4c55 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -35,5 +35,5 @@ Werkzeug==0.14.1
 WTForms==2.1
 
 # requirements for Heroku
-psycopg2==2.7.3.1
-gunicorn==19.7.1
+#psycopg2==2.7.3.1
+#gunicorn==19.7.1