diff --git a/Dockerfile b/Dockerfile
index fa120100a07448a6dbe317d065a69d74633b0cf3..558383666d907561a9cb384078fbfaa569dd12c5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -24,21 +24,16 @@ MAINTAINER Martin Donath <martin.donath@squidfunk.com>
 # Set build directory
 WORKDIR /tmp
 
-# Install dependencies
-COPY requirements.txt .
-RUN \
-  pip install -r requirements.txt && \
-  rm requirements.txt
-
 # Copy files necessary for build
-COPY material material
-COPY MANIFEST.in MANIFEST.in
-COPY package.json package.json
-COPY setup.py setup.py
+COPY material .
+COPY MANIFEST.in .
+COPY package.json .
+COPY requirements.txt .
+COPY setup.py .
 
 # Perform build and cleanup artifacts
 RUN \
-  python setup.py install && \
+  python setup.py install 2>/dev/null && \
   rm -rf /tmp/*
 
 # Set working directory
diff --git a/requirements.txt b/requirements.txt
index 2109c3ede36f99da7a05183a33f073d03ccf3804..600ff7e85d50fc956d95f44fdf6ce627fd43c7bb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -19,5 +19,5 @@
 # IN THE SOFTWARE.
 
 mkdocs>=0.16
-pygments
-pymdown-extensions>=1.2
+pygments>=2.2
+pymdown-extensions>=2.0
diff --git a/setup.py b/setup.py
index 6acaf1ac26e21a1e0465c33c86f29e92d7b51e18..b2816a043203877e7f0bd247b189a01a298f9eaf 100644
--- a/setup.py
+++ b/setup.py
@@ -25,6 +25,13 @@ from setuptools import setup, find_packages
 with open("package.json") as data:
     package = json.load(data)
 
+# Load list of dependencies
+with open("requirements.txt") as data:
+    install_requires = [
+        line for line in data.read().split("\n")
+            if line and not line.startswith("#")
+    ]
+
 # Package description
 setup(
     name = package["name"],
@@ -37,6 +44,7 @@ setup(
     keywords = package["keywords"],
     packages = find_packages(),
     include_package_data = True,
+    install_requires = install_requires,
     entry_points = {
         "mkdocs.themes": [
             "material = material",