|
|
|
@ -30,7 +30,7 @@ |
|
|
|
{% macro xx_cargo_config() -%} |
|
|
|
# Workaround for xx related build issues |
|
|
|
# https://github.com/tonistiigi/xx/pull/108#issuecomment-3700635977 |
|
|
|
PKG_CONFIG="$(command -v "$(xx-info)-pkg-config")" xx-cargo build --features ${DB} --profile "${CARGO_PROFILE}" |
|
|
|
PKG_CONFIG="$(command -v "$(xx-info)-pkg-config")" xx-cargo build --features "${DB}" --features "${FEATURES}" --profile "${CARGO_PROFILE}" |
|
|
|
{%- endmacro %} |
|
|
|
FROM --platform=linux/amd64 docker.io/vaultwarden/web-vault@{{ vault_image_digest }} AS vault |
|
|
|
|
|
|
|
@ -58,8 +58,6 @@ ARG TARGETARCH |
|
|
|
ARG TARGETVARIANT |
|
|
|
ARG TARGETPLATFORM |
|
|
|
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
|
|
|
|
|
|
|
# Build time options to avoid dpkg warnings and help with reproducible builds. |
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
LANG=C.UTF-8 \ |
|
|
|
@ -111,7 +109,7 @@ RUN echo "export CARGO_TARGET=${CARGO_BUILD_TARGET}" >> /env-cargo && \ |
|
|
|
cat /env-cargo |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
RUN source /env-cargo && \ |
|
|
|
RUN . /env-cargo && \ |
|
|
|
rustup target add "${CARGO_TARGET}" |
|
|
|
|
|
|
|
# Copies over *only* your manifests and build files |
|
|
|
@ -120,22 +118,23 @@ COPY ./macros ./macros |
|
|
|
|
|
|
|
ARG CARGO_PROFILE=release |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
{% if base == "debian" %} |
|
|
|
# Configure the DB and FEATURES ARGs as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
{% if base == "debian" %} |
|
|
|
ARG FEATURES=s3 |
|
|
|
{% elif base == "alpine" %} |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
ARG FEATURES=s3,enable_mimalloc |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
# This folder contains the compiled dependencies |
|
|
|
RUN source /env-cargo && \ |
|
|
|
RUN . /env-cargo && \ |
|
|
|
{% if base == "debian" %} |
|
|
|
{{ xx_cargo_config() }} && \ |
|
|
|
{% elif base == "alpine" %} |
|
|
|
cargo build --features ${DB} --profile "${CARGO_PROFILE}" --target="${CARGO_TARGET}" && \ |
|
|
|
cargo build --features "${DB}" --features "${FEATURES}" --profile "${CARGO_PROFILE}" --target="${CARGO_TARGET}" && \ |
|
|
|
{% endif %} |
|
|
|
find . -not -path "./target*" -delete |
|
|
|
|
|
|
|
@ -146,7 +145,7 @@ COPY . . |
|
|
|
ARG VW_VERSION |
|
|
|
|
|
|
|
# Builds again, this time it will be the actual source files being build |
|
|
|
RUN source /env-cargo && \ |
|
|
|
RUN . /env-cargo && \ |
|
|
|
# Make sure that we actually build the project by updating the src/main.rs timestamp |
|
|
|
# Also do this for build.rs to ensure the version is rechecked |
|
|
|
touch build.rs src/main.rs && \ |
|
|
|
@ -154,9 +153,9 @@ RUN source /env-cargo && \ |
|
|
|
{% if base == "debian" %} |
|
|
|
{{ xx_cargo_config() }} && \ |
|
|
|
{% elif base == "alpine" %} |
|
|
|
cargo build --features ${DB} --profile "${CARGO_PROFILE}" --target="${CARGO_TARGET}" && \ |
|
|
|
cargo build --features "${DB}" --features "${FEATURES}" --profile "${CARGO_PROFILE}" --target="${CARGO_TARGET}" && \ |
|
|
|
{% endif %} |
|
|
|
if [[ "${CARGO_PROFILE}" == "dev" ]] ; then \ |
|
|
|
if test "${CARGO_PROFILE}" = "dev"; then \ |
|
|
|
ln -vfsr "/app/target/${CARGO_TARGET}/debug" /app/target/final ; \ |
|
|
|
else \ |
|
|
|
ln -vfsr "/app/target/${CARGO_TARGET}/${CARGO_PROFILE}" /app/target/final ; \ |
|
|
|
|