diff --git a/Dockerfile b/Dockerfile
index cd8b865c179a232d84748bd8bad41b8b8b67698e..ce50d46fc1f2dce3dc8445fc1655590baf6f5244 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,21 +23,11 @@ RUN echo "build ALL=(ALL) NOPASSWD: ALL" | tee -a /etc/sudoers
 USER build
 WORKDIR /home/build/
 
-# TODO: everything from this point could be done by the container and not the image
-COPY clone-qt.sh /home/build
-RUN ./clone-qt.sh
-
-ENV MAKEFLAGS=-j8
-COPY build-qt.sh /home/build
-RUN ./build-qt.sh
-
-COPY build-qtbase-tests.sh /home/build
-RUN ./build-qtbase-tests.sh
-
-COPY build-qtwayland-tests.sh /home/build
-RUN ./build-qtwayland-tests.sh
+ENV QT_DOCKERTEST_QT5_REV=dev
 
 ENV XDG_RUNTIME_DIR=/tmp
 ENV QT_QPA_PLATFORM=wayland
-COPY test-qt.sh /home/build
-CMD "./test-qt.sh"
+ENV MAKEFLAGS=-j8
+
+COPY scripts/ /home/build/scripts
+CMD "./scripts/run.sh"
diff --git a/clone-qt.sh b/clone-qt.sh
deleted file mode 100755
index 48df6f8fcb54de4751e9ddb3a1f78c0638f34a84..0000000000000000000000000000000000000000
--- a/clone-qt.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-set -ex
-qt5_rev=5.11 #maybe set this from the Dockerfile
-qtwayland_rev=5.11
-rm -rf qt5
-mkdir qt5
-cd qt5
-git init
-git remote add origin https://codereview.qt-project.org/qt/qt5.git
-git fetch --depth 1 origin "$qt5_rev"
-git checkout FETCH_HEAD
-
-git submodule update --init --depth 1 -- qtbase qtxmlpatterns qtdeclarative qtwayland
-
-cd qtwayland
-git fetch --depth 1 origin "$qtwayland_rev"
-git checkout FETCH_HEAD
diff --git a/build-qt.sh b/scripts/build-qt.sh
similarity index 89%
rename from build-qt.sh
rename to scripts/build-qt.sh
index e2f9a833fde7d4faf9471e7a19d3d4f298cc10ca..b9e83fa655b2c793acbce8582bb338a54cd7b4ed 100755
--- a/build-qt.sh
+++ b/scripts/build-qt.sh
@@ -12,4 +12,4 @@ cd build-qt
     -nomake examples \
     -nomake tests \
     -feature-wayland-client
-time make -ks module-qtwayland
+make -ks module-qtwayland
diff --git a/build-qtbase-tests.sh b/scripts/build-qtbase-tests.sh
similarity index 100%
rename from build-qtbase-tests.sh
rename to scripts/build-qtbase-tests.sh
diff --git a/build-qtwayland-tests.sh b/scripts/build-qtwayland-tests.sh
similarity index 100%
rename from build-qtwayland-tests.sh
rename to scripts/build-qtwayland-tests.sh
diff --git a/scripts/clone-qt.sh b/scripts/clone-qt.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0ae4eb7093423c5f78069ef7cb3f3e08148a4501
--- /dev/null
+++ b/scripts/clone-qt.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -ex
+qt5_rev=${QT_DOCKERTEST_QT5_REV:-5.11}
+rm -rf qt5
+mkdir qt5
+cd qt5
+git init
+git remote add origin https://codereview.qt-project.org/qt/qt5.git
+git fetch --depth 1 origin "$qt5_rev"
+git checkout FETCH_HEAD
+
+#proper shallow cloning doesn't work for debian stretch for some reason
+#git submodule update --init --depth 1 -- qtbase qtxmlpatterns qtdeclarative qtwayland
+git submodule update --init --depth 50 -- qtbase qtxmlpatterns qtdeclarative qtwayland
+
+if [[ -v QT_DOCKERTEST_QTWAYLAND_REV ]] ; then
+    cd qtwayland
+    git fetch --depth 1 origin "$QT_DOCKERTEST_QTWAYLAND_REV"
+    git checkout FETCH_HEAD
+fi
diff --git a/scripts/run.sh b/scripts/run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..15cfbb7bb24b43099c8c016b50f83b525eb1b091
--- /dev/null
+++ b/scripts/run.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -ex
+time scripts/clone-qt.sh
+echo Finished cloning
+time scripts/build-qt.sh
+echo Finished building
+time scripts/build-qtbase-tests.sh
+echo Finished building qtbase tests
+time scripts/build-qtwayland-tests.sh
+echo Finished building qtwayland tests
+time scripts/test-qt.sh
+echo Finished testing
diff --git a/test-qt.sh b/scripts/test-qt.sh
similarity index 100%
rename from test-qt.sh
rename to scripts/test-qt.sh