diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..0338ac2
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,45 @@
+.git
+.gitignore
+Dockerfile
+
+#
+#
+# COPIED FROM .gitignore , please keep it in sync
+#
+#
+
+# Logs
+logs
+*.log
+*.swp
+*.swo
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
+node_modules
+
+# Ignore build files
+public
+/errorShots
+/old
+/build
diff --git a/Dockerfile b/Dockerfile
index a6279cc..2e71e6c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,21 +1,22 @@
-FROM node:10-slim
+FROM node:10 as builder
+WORKDIR /maputnik
-RUN apt-get update && apt-get install -y --no-install-recommends \
- git \
- python \
- && rm -rf /var/lib/apt/lists/*
+# Only copy package.json to prevent npm install from running on every build
+COPY package.json package-lock.json ./
+RUN npm install
-EXPOSE 8888
-
-ENV HOME /maputnik
-RUN mkdir ${HOME}
-
-COPY . ${HOME}/
-
-WORKDIR ${HOME}
-
-RUN npm install -d
+# Build maputnik
+# TODO: we should also do a npm run test here (needs more dependencies)
+COPY . .
RUN npm run build
-WORKDIR ${HOME}/build/build
-CMD python -m SimpleHTTPServer 8888
+#---------------------------------------------------------------------------
+
+# Create a clean python-based image with just the build results
+FROM python:3-slim
+WORKDIR /maputnik
+
+COPY --from=builder /maputnik/build/build .
+
+EXPOSE 8888
+CMD python -m http.server 8888
diff --git a/README.md b/README.md
index 7209715..6ca78cd 100644
--- a/README.md
+++ b/README.md
@@ -17,16 +17,20 @@
A free and open visual editor for the [Mapbox GL styles](https://www.mapbox.com/mapbox-gl-style-spec/)
targeted at developers and map designers.
+## Usage
+
- :link: Design your maps online at **** (all in local storage)
- :link: Use the [Maputnik CLI](https://github.com/maputnik/editor/wiki/Maputnik-CLI) for local style development
+- In a Docker, run this command and browse to http://localhost:8888, Ctrl+C to stop the server.
-Mapbox has built one of the best and most amazing OSS ecosystems. A key component to ensure its longevity and independence is an OSS map designer.
-
+```bash
+docker run -it --rm -p 8888:8888 maputnik/editor
+```
## Donations
+Mapbox has built one of the best and most amazing OSS ecosystems. A key component to ensure its longevity and independence is an OSS map designer.
If you or your organisation has seen value from Maputnik, please consider donating at
-
## Documentation
The documentation can be found in the [Wiki](https://github.com/maputnik/editor/wiki). You are welcome to collaborate!