73 lines
2.3 KiB
Docker
73 lines
2.3 KiB
Docker
FROM rust:alpine AS build
|
|
|
|
ARG VAULTWARDEN_FEATURES=[[ join .vaultwarden.server.features "," ]] \
|
|
VAULTWARDEN_SERVER_VERSION=1.29.2 \
|
|
VAULTWARDEN_WEB_VERSION=2023.9.1
|
|
|
|
RUN set -euxo pipefail &&\
|
|
apk --no-cache upgrade &&\
|
|
apk --no-cache add \
|
|
curl \
|
|
ca-certificates \
|
|
tar \
|
|
musl-dev \
|
|
[[- if has .vaultwarden.server.features "postgresql" ]]
|
|
postgresql15-dev \
|
|
[[- end ]]
|
|
[[- if has .vaultwarden.server.features "mysql" ]]
|
|
mariadb-dev \
|
|
[[- end ]]
|
|
[[- if has .vaultwarden.server.features "sqlite" ]]
|
|
sqlite-dev \
|
|
[[- end ]]
|
|
&&\
|
|
cd /tmp &&\
|
|
curl -sSLO https://github.com/dani-garcia/vaultwarden/archive/refs/tags/${VAULTWARDEN_SERVER_VERSION}.tar.gz &&\
|
|
tar xvzf ${VAULTWARDEN_SERVER_VERSION}.tar.gz &&\
|
|
cd vaultwarden-${VAULTWARDEN_SERVER_VERSION} &&\
|
|
rustup target add x86_64-unknown-linux-musl &&\
|
|
cargo build --features=${VAULTWARDEN_FEATURES} --profile "release" --target "x86_64-unknown-linux-musl" &&\
|
|
find ./target -type f -name vaultwarden &&\
|
|
# Move vaultwarden bin to copy it easily in the runtime stage \
|
|
mv ./target/x86_64-unknown-linux-musl/release/vaultwarden / &&\
|
|
chown root:root /vaultwarden &&\
|
|
chmod 755 /vaultwarden &&\
|
|
cd ../ &&\
|
|
curl -sSLO https://github.com/dani-garcia/bw_web_builds/releases/download/v${VAULTWARDEN_WEB_VERSION}/bw_web_v${VAULTWARDEN_WEB_VERSION}.tar.gz &&\
|
|
tar xvzf bw_web_v${VAULTWARDEN_WEB_VERSION}.tar.gz &&\
|
|
mv web-vault / &&\
|
|
chown -R root:root /web-vault
|
|
|
|
FROM [[ .docker.repo ]][[ .docker.base_images.alpine.image ]]
|
|
MAINTAINER [[ .docker.maintainer ]]
|
|
|
|
ENV ROCKET_PROFILE=release \
|
|
ROCKET_ADDRESS=0.0.0.0 \
|
|
ROCKET_PORT=8234 \
|
|
DATA_FOLDER=/data \
|
|
DATABASE_URL=/data/db.sqlite3
|
|
|
|
COPY --from=build /vaultwarden /usr/local/bin/
|
|
COPY --from=build /web-vault /opt/vaultwarden/web-vault
|
|
|
|
RUN set -euxo pipefail &&\
|
|
apk --no-cache upgrade &&\
|
|
apk --no-cache add \
|
|
ca-certificates \
|
|
curl \
|
|
openssl \
|
|
tzdata \
|
|
&&\
|
|
addgroup -g 8234 vaultwarden &&\
|
|
adduser --system --ingroup vaultwarden --disabled-password --uid 8234 --home /opt/vaultwarden --shell /sbin/nologin vaultwarden &&\
|
|
mkdir /data &&\
|
|
chown vaultwarden:vaultwarden /data
|
|
|
|
WORKDIR /opt/vaultwarden
|
|
|
|
USER vaultwarden
|
|
|
|
EXPOSE 8234
|
|
|
|
CMD ["vaultwarden"]
|