FROM docker.io/clux/muslrust:1.79.0-stable@sha256:b22fdfced34ab14728f9860387406cea9542f10116c3bcd267f63c7b0664de2f as build ARG WEBVAULT_VERSION ARG VAULTWARDEN_VERSION ARG DEBIAN_FRONTEND=noninteractive ARG LANG=C.UTF-8 ARG TZ=UTC ARG RUSTFLAGS="-C link-arg=-s" ARG DB=sqlite,postgresql ARG TARGETPLATFORM # renovate: datasource=github-releases depName=dani-garcia/bw_web_builds versioning=loose ENV WEBVAULT_VERSION="${WEBVAULT_VERSION:-v2024.5.1}" # renovate: datasource=github-releases depName=dani-garcia/vaultwarden ENV VAULTWARDEN_VERSION="${VAULTWARDEN_VERSION:-1.31.0}" WORKDIR /src RUN apt-get update && apt-get install -y --no-install-recommends && \ mkdir -p /release/web-vault && \ mkdir -p /data RUN echo "Using Vaultwarden version '${VAULTWARDEN_VERSION##v}'" && \ curl -sSL "https://github.com/dani-garcia/vaultwarden/archive/${VAULTWARDEN_VERSION##v}.tar.gz" | \ tar xz --strip-components=1 && \ echo "Using Web Vault version '${WEBVAULT_VERSION##v}'" && \ curl -SsfL "https://github.com/dani-garcia/bw_web_builds/releases/download/${WEBVAULT_VERSION}/bw_web_${WEBVAULT_VERSION}.tar.gz" | \ tar xz -C /release RUN echo "Building for platform '$TARGETPLATFORM'" && \ case "$TARGETPLATFORM" in \ "linux/amd64") echo x86_64-unknown-linux-musl > rust_target ;; \ "linux/arm64") echo aarch64-unknown-linux-musl > rust_target ;; \ *) exit 1 ;; \ esac RUN rustup set profile minimal && \ rustup target add $(cat rust_target) && \ VW_VERSION="${VAULTWARDEN_VERSION##v}" cargo build -j 4 --features "$DB" --target $(cat rust_target) --release RUN ldd target/$(cat rust_target)/release/vaultwarden && \ target/$(cat rust_target)/release/vaultwarden --help && \ target/$(cat rust_target)/release/vaultwarden --version FROM docker.io/alpine:3.20@sha256:0a4eaa0eecf5f8c050e5bba433f58c052be7587ee8af3e8b3910ef9ab5fbe9f5 LABEL maintainer="Robert Kaussow " LABEL org.opencontainers.image.authors="Robert Kaussow " LABEL org.opencontainers.image.title="Vaultwarden" LABEL org.opencontainers.image.url="https://gitea.rknet.org/container/vaultwarden" LABEL org.opencontainers.image.source="https://gitea.rknet.org/container/vaultwarden" LABEL org.opencontainers.image.documentation="https://gitea.rknet.org/container/vaultwarden" ENV DATA_FOLDER=/data ENV ROCKET_ADDRESS=0.0.0.0 ENV ROCKET_PORT=8000 ENV WEBSOCKET_ADDRESS=0.0.0.0 ENV WEBSOCKET_PORT=3012 COPY --from=build --chown=65532:65532 /data /data COPY --from=build /release/web-vault /web-vault COPY --from=build /src/target/**/release/vaultwarden /bin/vaultwarden EXPOSE 8000 EXPOSE 3012 STOPSIGNAL SIGTERM USER 65532 CMD ["/bin/vaultwarden"]