diff --git a/Dockerfile b/Dockerfile
index 1793f9eac95f897631a0416e346d5fa833eddaaf..55d9aaef4f8ea36ea1bd4ee81fd709d1871dfce1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -11,20 +11,26 @@ ENV FC_LANG en-US
 ENV LC_CTYPE en_US.UTF-8
 
 # bash:    various shell scripts
-# wget:    installing lein
+# wget:    installing lein (TODO -- is this actually needed? We don't use wget directly)
+# curl:    needed by script that installs Clojure CLI
 # git:     ./bin/version
-# yarn:  frontend building
-# make:    backend building
+# yarn:    frontend building
+# make:    backend building (TODO -- huh? We don't use Make to build the backend)
 # gettext: translations
 # java-cacerts: installs updated cacerts to /etc/ssl/certs/java/cacerts
 
-RUN apk add --update coreutils bash yarn git wget make gettext java-cacerts
+RUN apk add --update coreutils bash yarn git wget curl make gettext java-cacerts
 
 # lein:    backend dependencies and building
 ADD https://raw.github.com/technomancy/leiningen/stable/bin/lein /usr/local/bin/lein
 RUN chmod 744 /usr/local/bin/lein
 RUN lein upgrade
 
+# Clojure CLI (needed for some build scripts)
+ADD https://download.clojure.org/install/linux-install-1.10.1.708.sh /tmp/linux-install-1.10.1.708.sh
+RUN chmod +x /tmp/linux-install-1.10.1.708.sh
+RUN /tmp/linux-install-1.10.1.708.sh
+
 # install dependencies before adding the rest of the source to maximize caching
 
 # backend dependencies
diff --git a/bin/build-drivers/build_drivers/build_driver.clj b/bin/build-drivers/build_drivers/build_driver.clj
index bc34a167c75e885e8cceb27d0ab0a61285b8cbcc..c067cbc5589c586bcab3593cec28f8ee31a58b4e 100644
--- a/bin/build-drivers/build_drivers/build_driver.clj
+++ b/bin/build-drivers/build_drivers/build_driver.clj
@@ -93,9 +93,9 @@
     (u/sh {:dir (c/driver-project-dir driver)} "lein" "clean")
     (u/sh {:dir (c/driver-project-dir driver)
            :env {"LEIN_SNAPSHOTS_IN_RELEASE" "true"
-                 #_"DEBUG"                     #_"1"
-                 "JAVA_HOME"                 (env/env :java-home)
-                 "HOME"                      (env/env :user-home)}}
+                 "HOME"                      (env/env :user-home)
+                 "PATH"                      (env/env :path)
+                 "JAVA_HOME"                 (env/env :java-home)}}
           "lein" "uberjar")
     (strip-and-compress-uberjar! driver)
     (u/announce "%s uberjar build successfully." driver)))
diff --git a/bin/metabuild_common/entrypoint.clj b/bin/metabuild_common/entrypoint.clj
index c7767ad32644b3eebeb8fdabfc599cc129b68500..c396b811a3c264ee7f40a94be9beb0a89fbb525e 100644
--- a/bin/metabuild_common/entrypoint.clj
+++ b/bin/metabuild_common/entrypoint.clj
@@ -10,7 +10,8 @@
       (let [e-map (Throwable->map e)]
         (println (colorize/red (str "Command failed: " (:cause e-map))))
         (binding [pprint/*print-right-margin* 120]
-          (pprint/pprint e-map))))))
+          (pprint/pprint e-map)))
+      (System/exit -1))))
 
 (defmacro exit-when-finished-nonzero-on-exception
   "Execute `body` and catch exceptions. If an Exception is thrown, exit with status code 0; if an exception was
diff --git a/bin/metabuild_common/shell.clj b/bin/metabuild_common/shell.clj
index da3951c54d89c7324b88da61f9f6bdcde79e695c..69f6199c01b4dac48e833c66252c9b7da9374b7c 100644
--- a/bin/metabuild_common/shell.clj
+++ b/bin/metabuild_common/shell.clj
@@ -32,7 +32,7 @@
   * `env` -- environment variables (as a map) to use when running `cmd`. If `:env` is `nil`, the default parent
     environment (i.e., the environment in which this Clojure code itself is ran) will be used; if `:env` IS passed, it
     completely replaces the parent environment in which this script is ran -- make sure you pass anything that might be
-    needed such as `JAVA_HOME` if you do this
+    needed such as `JAVA_HOME` and `PATH` if you do this
 
   * `dir` -- current directory to use when running the shell command. If not specified, command is run in the same
     current directory as the Clojure scripts, `bin/build-drivers`