diff --git a/.dockerignore b/.dockerignore
index 6f01cb222eb3201710d40c4a5fb9f3ad4a50aae9..2b5e51a618a9be6492db086de1ae4d57cc5ca41a 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,4 @@
 /node_modules
 /public
+/Dockerfile
 /.?*
diff --git a/Dockerfile b/Dockerfile
index b5c9d7ff72bcc53f7561b21a5f7d5fda4c5dfb9a..762a38e2b572a05edfda5dcd951936f54960e85c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -51,10 +51,11 @@ ENV SERVER_HOST=0.0.0.0 \
     OUTPUT=/public \
     WKHTMLTOPDF_BINARY=/usr/local/bin/wkhtmltopdf
 
-RUN mkdir -p -m 0777 $OUTPUT
+RUN mkdir -p -m 0777 $OUTPUT \
+    && ln -s /opt/prezbuilder/bin/prezbuilder /usr/local/bin/prezbuilder
 
-WORKDIR /opt/prezbuilder
+WORKDIR /src
 EXPOSE 3000/tcp 35729/tcp
 
-ENTRYPOINT ["/opt/prezbuilder/node_modules/.bin/gulp"]
+ENTRYPOINT ["/usr/local/bin/prezbuilder"]
 CMD ["dev"]
diff --git a/bin/prezbuilder b/bin/prezbuilder
new file mode 100755
index 0000000000000000000000000000000000000000..dae525a095aa35f894e52c3e815964b21fa5c490
--- /dev/null
+++ b/bin/prezbuilder
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+set -e
+
+usage() {
+  echo "Usage: $0 dev|build [src_dir [output_dir]]" >&2
+  exit 1
+}
+
+checkdir() {
+  if [[ -z $1 ]]; then
+    echo ""
+    return 0
+  fi
+  local DIR="$(readlink -f $1)"
+  if [[ ! -d "$DIR" ]]; then
+    echo "$1 is not an existing directory" >&2
+    usage
+  fi
+  echo "$DIR"
+  return 0
+}
+
+case "$1" in
+  dev|build) COMMAND="$1" ;;
+  *) usage
+esac
+
+export SRC="$(checkdir $2)"
+export OUTPUT="$(checkdir $3)"
+
+BASE="$(dirname $(readlink -f $0))/.."
+exec "$BASE/node_modules/.bin/gulp" --cwd "$BASE" "$COMMAND"