From b036caa85eae78899ac70d6f135ff1efa581a9a4 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Mon, 31 Jan 2022 21:45:39 +0000 Subject: [PATCH] Dockerfile: Ensure a compiler is available while pip-installing requirements Dependencies are not necessarily packaged for all architectures. In some cases (such as aiohttp, and others, on ARM) pip will attempt to compile the dependency from scratch. Since switching to multi-stage builds, we have been installing these without a compiler present which caused the build to fail on ARM architectures. This commit temporarily installs build-essential packages while running pip, then removes them again afterwards. --- Dockerfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index cf74ab0..fa0998c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,20 +36,21 @@ ENV SNIKKET_WEB_PROSODY_ENDPOINT=http://127.0.0.1:5280/ HEALTHCHECK CMD nc -zv ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_INTERFACE:-127.0.0.1} ${SNIKKET_TWEAK_PORTAL_INTERNAL_HTTP_PORT:-5765} +COPY requirements.txt /opt/snikket-web-portal/requirements.txt + +WORKDIR /opt/snikket-web-portal + RUN set -eu; \ export DEBIAN_FRONTEND=noninteractive ; \ apt-get update ; \ apt-get install -y --no-install-recommends \ - python3 python3-pip python3-setuptools python3-wheel; \ + python3 python3-pip python3-setuptools python3-wheel build-essential; \ + pip3 install -r requirements.txt; \ + apt-get remove -y --autoremove build-essential; \ apt-get clean ; rm -rf /var/lib/apt/lists; \ pip3 install hypercorn; \ rm -rf /root/.cache; -WORKDIR /opt/snikket-web-portal - -COPY requirements.txt /opt/snikket-web-portal/requirements.txt -RUN set -eu; pip3 install -r requirements.txt; rm -rf /root/.cache; - COPY --from=build /opt/snikket-web-portal/snikket_web/ /opt/snikket-web-portal/snikket_web COPY babel.cfg /opt/snikket-web-portal/babel.cfg