diff --git a/Dockerfile b/Dockerfile.app
similarity index 100%
rename from Dockerfile
rename to Dockerfile.app
diff --git a/Dockerfile.neo4j b/Dockerfile.neo4j
new file mode 100644
index 0000000000000000000000000000000000000000..0b20d49dec8a52638200137d46e55721bbf95618
--- /dev/null
+++ b/Dockerfile.neo4j
@@ -0,0 +1,14 @@
+FROM neo4j:latest
+
+ENV NEO4J_AUTH=none
+
+RUN cd /var/lib/neo4j/plugins \
+  && wget http://products.graphaware.com/download/framework-server-community/graphaware-server-community-all-3.0.6.43.jar \
+  && wget http://products.graphaware.com/download/noderank/graphaware-noderank-3.0.6.43.3.jar
+RUN echo "dbms.unmanaged_extension_classes=com.graphaware.server=/graphaware" >> /var/lib/neo4j/conf/neo4j.conf
+RUN echo 'com.graphaware.runtime.enabled=true\n\
+com.graphaware.module.NR.1=com.graphaware.module.noderank.NodeRankModuleBootstrapper\n\
+com.graphaware.module.NR.maxTopRankNodes=10\n\
+com.graphaware.module.NR.dampingFactor=0.85\n\
+com.graphaware.module.NR.propertyKey=nodeRank\n'\
+  >> /var/lib/neo4j/conf/neo4j.conf
diff --git a/docker-compose.yml b/docker-compose.yml
index 18af16b6045c9663dd5cd42062f5291f7364a60f..59e0e549680a1295d880ca9ec8bf5aee3b9dfcc7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,14 +5,14 @@ services:
   redis:
     image: redis
   neo4j:
-    image: neo4j
-    environment:
-      - NEO4J_AUTH=none
-  app:
-    build: .
-    env_file: .env.production
+    build:
+      context: .
+      dockerfile: Dockerfile.neo4j
   web:
-    extends: app
+    build:
+      context: .
+      dockerfile: Dockerfile.app
+    env_file: .env.production
     command: bundle exec rails s -p 3000 -b '0.0.0.0'
     ports:
       - "3000:3000"
@@ -24,7 +24,10 @@ services:
       - ./public/assets:/mastodon/public/assets
       - ./public/system:/mastodon/public/system
   sidekiq:
-    extends: app
+    build:
+      context: .
+      dockerfile: Dockerfile.app
+    env_file: .env.production
     command: bundle exec sidekiq -q default -q mailers
     depends_on:
       - db