aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docker/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'docker/Dockerfile')
-rw-r--r--docker/Dockerfile21
1 files changed, 20 insertions, 1 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 18bffde..46a2215 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,9 +1,28 @@
FROM python:3.11-alpine AS base
-FROM base AS build
+FROM base AS deps
RUN apk add -q --no-cache gcc libffi-dev make musl-dev
+FROM deps as deps-amd64
+FROM deps as deps-arm64
+
+FROM deps as deps-arm
+
+# The cryptography package doesn't distribute pre-built binaries for this
+# platform, which is why it's built manually (and requires extra dependencies).
+RUN apk add -q --no-cache cargo git openssl-dev rust
+
+# Unless this is set, cargo build fails with out of memory errors for some
+# reason. Reference:
+#
+# https://github.com/docker/buildx/issues/359#issuecomment-1331443419
+#
+# This is also the reason to install git as a build dependency.
+ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
+
+FROM deps-$TARGETARCH as build
+
COPY ["requirements.txt", "/tmp/"]
RUN pip3 install -q --no-cache-dir --target=/deps -r /tmp/requirements.txt