diff --git a/docker/uwsgi-base/Dockerfile b/docker/uwsgi-base/Dockerfile
index 8d61969f6e..a31e6a55d2 100644
--- a/docker/uwsgi-base/Dockerfile
+++ b/docker/uwsgi-base/Dockerfile
@@ -14,12 +14,27 @@
 # limitations under the License.
 
 ARG PYTHON_VERSION=3.7
-FROM docker.io/opendevorg/python-builder:${PYTHON_VERSION} as builder
+ARG DEBIAN_VERSION=buster
+FROM docker.io/opendevorg/python-builder:${PYTHON_VERSION}-${DEBIAN_VERSION} as builder
+
+ARG PYTHON_VERSION
 
 COPY . /tmp/src
-RUN assemble uWSGI
+# We set pip verbosity because this seems to make the uWSGI wheel builds
+# more reliable on bullseye. Is it crazy to rely on this? Absolutely. But
+# uWSGI's build system is a ball of fun. There is an upstream pull request
+# that appears to be fixing this issue:
+#     https://github.com/unbit/uwsgi/pull/2362
+# jrosser also indicates this can be fixed by not overriding function names:
+#     https://paste.opendev.org/show/811669/
+# Until a fix lands use this verbosity flag to work around it.
+#
+# Older python bundles older pip and doesn't understand non binary
+# verbosity values. We explicitly invoke bash here to get access to [[
+# in order to check the version against a pattern. test doesn't cut it.
+RUN /bin/bash -c "if [[ $PYTHON_VERSION == 3.7* ]] ; then exit 0 ; else exit 1 ; fi" && PIP_VERBOSE=1 assemble uWSGI || PIP_VERBOSE=3 assemble uWSGI
 
-FROM docker.io/opendevorg/python-base:${PYTHON_VERSION}
+FROM docker.io/opendevorg/python-base:${PYTHON_VERSION}-${DEBIAN_VERSION}
 
 COPY --from=builder /output/ /output
 RUN /output/install-from-bindep && \
diff --git a/docker/uwsgi-base/bindep.txt b/docker/uwsgi-base/bindep.txt
index 670f7d05a7..ba01cbbda5 100644
--- a/docker/uwsgi-base/bindep.txt
+++ b/docker/uwsgi-base/bindep.txt
@@ -1,5 +1,6 @@
 gcc [compile]
 libc6-dev [compile]
 libffi-dev [compile platform:dpkg]
-libffi6 [platform:dpkg]
+libffi7 [platform:dpkg !platform:ubuntu-bionic !platform:debian-buster]
+libffi6 [platform:ubuntu-bionic platform:debian-buster]
 libssl-dev [compile platform:dpkg]