diff --git a/api/Dockerfile b/api/Dockerfile
index 7a8526e83bc1b01e745ab955c97827821aecae4b..d19bc602f660018c24bdaaa606f7d29da88d5c42 100644
--- a/api/Dockerfile
+++ b/api/Dockerfile
@@ -1,37 +1,34 @@
-FROM alpine:3.10
+FROM alpine:3.10 as builder
 
 RUN \
     echo 'installing dependencies' && \
-    apk add --no-cache                \
-    bash             \
+    apk add --no-cache               \
     git             \
-    gettext            \
     musl-dev           \
     gcc \
     postgresql-dev \
     python3-dev        \
     py3-psycopg2       \
-    py3-pillow         \
     libldap            \
-    ffmpeg             \
-    libpq              \
-    libmagic           \
     libffi-dev         \
     make         \
     zlib-dev           \
+    jpeg-dev           \
     openldap-dev \
     && \
     \
     ln -s /usr/bin/python3 /usr/bin/python
 
+# create virtual env for next stage
+RUN python -m venv /venv
+# emulate activation by prefixing PATH
+ENV PATH="/venv/bin:$PATH" VIRTUAL_ENV=/venv
+
 RUN mkdir /requirements
 COPY ./requirements/base.txt /requirements/base.txt
 # hack around https://github.com/pypa/pip/issues/6158#issuecomment-456619072
 ENV PIP_DOWNLOAD_CACHE=/noop/
 RUN \
-    echo 'fixing requirements file for alpine' && \
-    sed -i '/Pillow/d' /requirements/base.txt && \
-    \
     echo 'installing pip requirements' && \
     pip3 install --upgrade pip && \
     pip3 install setuptools wheel && \
@@ -43,6 +40,26 @@ COPY ./requirements/*.txt /requirements/
 RUN \
     if [ "$install_dev_deps" = "1" ] ; then echo "Installing dev dependencies" && pip3 install --no-cache-dir -r /requirements/local.txt -r /requirements/test.txt ; else echo "Skipping dev deps installation" ; fi
 
+
+FROM alpine:3.10 as build-image
+
+COPY --from=builder /venv /venv
+# emulate activation by prefixing PATH
+ENV PATH="/venv/bin:$PATH"
+
+RUN apk add --no-cache \
+    libmagic \
+    bash             \
+    gettext            \
+    python3        \
+    jpeg-dev \
+    ffmpeg             \
+    libpq              \
+    && \
+    \
+    ln -s /usr/bin/python3 /usr/bin/python
+
+
 ENTRYPOINT ["./compose/django/entrypoint.sh"]
 CMD ["./compose/django/server.sh"]
 
diff --git a/changes/changelog.d/docker-reduced-size.enhancement b/changes/changelog.d/docker-reduced-size.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..1565d94ee8c64d118738758ac1af9d5a157acda7
--- /dev/null
+++ b/changes/changelog.d/docker-reduced-size.enhancement
@@ -0,0 +1 @@
+Reduced size of funkwhale/funkwhale docker images thanks to multi-stage builds (!1042)