--- a
+++ b/pyproject.minimal.toml
@@ -0,0 +1,15 @@
+# This contains just the minimal configuration needed to be able to install the
+# script entrypoints. We use this in the Dockerfile to be able to set up a
+# virtualenv with all the right scripts pointing to the right entrypoints
+# without creating a dependency on the whole project state so we avoid having
+# to rebuild the virtualenv every time any file changes.
+#
+# A test at `tests/unit/test_pyproject_minimal.py` makes sure that this file
+# doesn't get out of sync with the original.
+
+[project]
+name = "opensafely-ehrql"
+version = "2+local"
+
+[project.scripts]
+ehrql = "ehrql.__main__:entrypoint"