diff --git a/Dockerfile b/Dockerfile
index 16e39eca8f58fdd3bcbb973556d3e55c45c58312..d7f6a369a70be7265901415bfdcd2b21d429e640 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,53 +13,10 @@ ENV SRC=/opt/src \
     ASSETS=/opt/maxima/assets \
     BIN=/opt/maxima/bin
 
-RUN echo ${MAXIMA_VERSION?Error \$MAXIMA_VERSION is not defined} \
-	 ${SBCL_VERSION?Error \$SBCL_VERSION is not defined}
-  
-RUN SBCL_ARCH=$(dpkg --print-architecture); if [ $SBCL_ARCH = amd64 ]; then SBCL_ARCH=x86-64; fi; echo $SBCL_ARCH > /SBCL_ARCH
-
-# Prerequisites for compiling
-RUN apt-get update \
-    && apt-get install -y \
-    bzip2 \
-    make \
-    wget \
-    python3 \
-    gcc \
-    texinfo
-
-RUN mkdir -p ${SRC}
-RUN wget https://sourceforge.net/projects/maxima/files/Maxima-source/${MAXIMA_VERSION}-source/maxima-${MAXIMA_VERSION}.tar.gz -O ${SRC}/maxima-${MAXIMA_VERSION}.tar.gz
-RUN wget https://sourceforge.net/projects/sbcl/files/sbcl/${SBCL_VERSION}/sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux-binary.tar.bz2 -O ${SRC}/sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar.bz2
-
-# Compile sbcl
-RUN cd ${SRC} \
-&& bzip2 -d sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar.bz2 \
-&& tar -xf sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar \
-&& rm sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar \
-&& ls \
-&& cd sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux \
-&& ./install.sh
-
-# Compile maxima
-RUN cd ${SRC} \
-&& tar -xf maxima-${MAXIMA_VERSION}.tar.gz \
-&& rm maxima-${MAXIMA_VERSION}.tar.gz \
-&& cd maxima-${MAXIMA_VERSION} \
-&& ./configure \
-&& make \
-&& make install \
-&& make clean
-
-
-RUN apt-get install -y gnuplot gettext-base sudo psmisc libbsd-dev tini
-
-COPY ./src/maxima_fork.c ${SRC}
-
-RUN cd ${SRC} && gcc -shared maxima_fork.c -lbsd -fPIC -Wall -Wextra -o libmaximafork.so \
-    && mv libmaximafork.so /usr/lib \
-    && rm -r ${SRC} /SBCL_ARCH && mkdir -p ${LIB} ${LOG} ${TMP} ${PLOT} ${ASSETS} ${BIN}
+COPY ./src/maxima_fork.c /
+COPY ./buildscript.sh /
 
+RUN bash /buildscript.sh
 
 # e.g. assStackQuestion/classes/stack/maxima
 ARG LIB_PATH
diff --git a/buildscript.sh b/buildscript.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0298dc5e64e4f67c73dff35234d9c55cbdcf7c47
--- /dev/null
+++ b/buildscript.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+echo ${MAXIMA_VERSION?Error \$MAXIMA_VERSION is not defined} \
+     ${SBCL_VERSION?Error \$SBCL_VERSION is not defined}
+  
+SBCL_ARCH=$(dpkg --print-architecture)
+if [ $SBCL_ARCH = amd64 ]; then
+	SBCL_ARCH=x86-64
+fi
+
+apt-get update 
+apt-get install -y bzip2 make wget python3 gcc texinfo
+
+mkdir -p ${SRC}
+wget https://sourceforge.net/projects/maxima/files/Maxima-source/${MAXIMA_VERSION}-source/maxima-${MAXIMA_VERSION}.tar.gz -O ${SRC}/maxima-${MAXIMA_VERSION}.tar.gz
+wget https://sourceforge.net/projects/sbcl/files/sbcl/${SBCL_VERSION}/sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux-binary.tar.bz2 -O ${SRC}/sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar.bz2
+
+# Compile sbcl
+cd ${SRC}
+bzip2 -d sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar.bz2
+tar -xf sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar
+rm sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux.tar
+ls
+cd sbcl-${SBCL_VERSION}-$(cat /SBCL_ARCH)-linux
+./install.sh
+
+# Compile maxima
+cd ${SRC}
+tar -xf maxima-${MAXIMA_VERSION}.tar.gz
+rm maxima-${MAXIMA_VERSION}.tar.gz
+cd maxima-${MAXIMA_VERSION}
+./configure
+make
+make install
+make clean
+
+# runtime dependencies
+apt-get install -y gnuplot-nox gettext-base libbsd-dev tini
+
+cd /
+gcc -shared maxima_fork.c -lbsd -fPIC -Wall -Wextra -o libmaximafork.so
+mv libmaximafork.so /usr/lib
+rm -r ${SRC} /maxima_fork.c
+mkdir -p ${LIB} ${LOG} ${TMP} ${PLOT} ${ASSETS} ${BIN}
+apt-get purge bzip2 make wget python3 gcc texinfo
+apt-get autoremove