aboutsummaryrefslogtreecommitdiff
path: root/docker/Dockerfile.j2
diff options
context:
space:
mode:
authorMathijs van Veluw <[email protected]>2024-04-27 21:51:14 +0200
committerGitHub <[email protected]>2024-04-27 21:51:14 +0200
commitca9234ed869a3c2bbe2d340d18224179f4ad1d6b (patch)
tree5f12c7aad445bb8ec27a0147f545812ac4c3b4af /docker/Dockerfile.j2
parent27dc67fadd3d45b9f7d8d37407cef9453b8f5802 (diff)
downloadvaultwarden-ca9234ed869a3c2bbe2d340d18224179f4ad1d6b.tar.gz
vaultwarden-ca9234ed869a3c2bbe2d340d18224179f4ad1d6b.zip
Add extra (unsupported) container build arch's (#4524)
There was a PR (#4370) to add i686/i386 support for Vaultwarden. That specific PR was not a viable way of adding this. This PR adds extra architectures for Debian based containers which we will not support by default. Those images will not be build and pushed to our container registries. Added the following architectures: - linux/386 - linux/ppc64le - linux/s390x Again, there will be no major support for these architectures, but it will allow people who use these architectures to build a Debian based binary more easily
Diffstat (limited to 'docker/Dockerfile.j2')
-rw-r--r--docker/Dockerfile.j213
1 files changed, 11 insertions, 2 deletions
diff --git a/docker/Dockerfile.j2 b/docker/Dockerfile.j2
index e8f81469..73a9c2a5 100644
--- a/docker/Dockerfile.j2
+++ b/docker/Dockerfile.j2
@@ -108,9 +108,17 @@ RUN USER=root cargo new --bin /app
WORKDIR /app
{% if base == "debian" %}
-# Environment variables for cargo across Debian and Alpine
+# Environment variables for Cargo on Debian based builds
+ARG ARCH_OPENSSL_LIB_DIR \
+ ARCH_OPENSSL_INCLUDE_DIR
+
RUN source /env-cargo && \
if xx-info is-cross ; then \
+ # Some special variables if needed to override some build paths
+ if [[ -n "${ARCH_OPENSSL_LIB_DIR}" && -n "${ARCH_OPENSSL_INCLUDE_DIR}" ]]; then \
+ echo "export $(echo "${CARGO_TARGET}" | tr '[:lower:]' '[:upper:]' | tr - _)_OPENSSL_LIB_DIR=${ARCH_OPENSSL_LIB_DIR}" >> /env-cargo && \
+ echo "export $(echo "${CARGO_TARGET}" | tr '[:lower:]' '[:upper:]' | tr - _)_OPENSSL_INCLUDE_DIR=${ARCH_OPENSSL_INCLUDE_DIR}" >> /env-cargo ; \
+ fi && \
# We can't use xx-cargo since that uses clang, which doesn't work for our libraries.
# Because of this we generate the needed environment variables here which we can load in the needed steps.
echo "export CC_$(echo "${CARGO_TARGET}" | tr '[:upper:]' '[:lower:]' | tr - _)=/usr/bin/$(xx-info)-gcc" >> /env-cargo && \
@@ -126,13 +134,14 @@ RUN source /env-cargo && \
# Configure the DB ARG as late as possible to not invalidate the cached layers above
ARG DB=sqlite,mysql,postgresql
{% elif base == "alpine" %}
-# Shared variables across Debian and Alpine
+# Environment variables for Cargo on Alpine based builds
RUN echo "export CARGO_TARGET=${RUST_MUSL_CROSS_TARGET}" >> /env-cargo && \
# To be able to build the armv6 image with mimalloc we need to tell the linker to also look for libatomic
if [[ "${TARGETARCH}${TARGETVARIANT}" == "armv6" ]] ; then echo "export RUSTFLAGS='-Clink-arg=-latomic'" >> /env-cargo ; fi && \
# Output the current contents of the file
cat /env-cargo
+# Configure the DB ARG as late as possible to not invalidate the cached layers above
# Enable MiMalloc to improve performance on Alpine builds
ARG DB=sqlite,mysql,postgresql,enable_mimalloc
{% endif %}