+# pick up things for gevent build
+#
+RUN apt-get update
+RUN apt-get install -y gcc musl-dev make file libffi-dev g++
+
+# --- all root operations must be above this line ------------------------------------
+
+
+# create a simple user. This is only really needed in stage 2,
+# however this makes the copying easier and straighttforward;
+# the 'pip option --user' command doesn't do the same thing when
+# run as root.
+#
+RUN addgroup a1user && adduser --ingroup a1user a1user
+
+# switch to the non-root user for installing python things
+USER a1user
+
+# Speed hack; we install gevent before anything because when building repeatedly (eg during dev)
+# and only changing a1 code, we do not need to keep compiling gevent which takes forever
+RUN pip install --user gevent
+RUN pip install --user requests
+
+COPY setup.py /home/a1user/
+COPY a1/ /home/a1user/a1
+RUN pip install --user /home/a1user
+
+
+
+# ----- stage 2 ---------------------------------------------------------------------------------
+
+# It might be tempting to use python:3.8, but that image is more than
+# 800 GiB to start, and the final image size if it is used is over
+# 1 GiB!! Using the plain ubuntu image, then installing py3, and taking
+# things built in the first stage, the final image size isn't tiny, but should
+# be well under the 800GiB start for the python image.
+#
+FROM ubuntu:20.04
+
+# pick up reference to python so that we can get 3.8 and not the really old default
+
+RUN apt-get update \
+ && apt install -y software-properties-common \
+ && add-apt-repository ppa:deadsnakes/ppa \
+ && apt-get install -y python3.8 python3-pip wget \
+ && apt-get clean