vaultwarden-web/Dockerfile

66 lines
2.3 KiB
Text
Raw Normal View History

2020-03-01 02:34:55 +03:00
# Compile the web vault using docker
# Usage:
# docker build -t web_vault_build .
# image_id=$(docker create web_vault_build)
# docker cp $image_id:/bw_web_vault.tar.gz .
# docker rm $image_id
#
# Note: you can use --build-arg to specify the version to build:
# docker build -t web_vault_build --build-arg VAULT_VERSION=master .
2020-03-26 00:00:56 +03:00
# image_id=$(docker create bitwardenrs/web-vault@sha256:feb3f46d15738191b9043be4cdb1be2c0078ed411e7b7be73a2f4fcbca01e13c)
# docker cp $image_id:/bw_web_vault.tar.gz .
# docker rm $image_id
FROM node:14-buster as build
# Update NPM - Matching the bitwarden/web GH Action Workflow.
RUN npm -g install npm@7
2020-03-01 02:34:55 +03:00
# Prepare the folder to enable non-root, otherwise npm will refuse to run the postinstall
RUN mkdir /vault
RUN chown node:node /vault
USER node
# Can be a tag, release, but prefer a commit hash because it's not changeable
# https://github.com/bitwarden/web/commit/$VAULT_VERSION
2020-03-14 16:05:25 +03:00
#
2021-09-22 20:52:19 +03:00
# Using https://github.com/bitwarden/web/releases/tag/v2.23.0
ARG VAULT_VERSION=cfa3d81cf87ed59c471021608b9b922023c825f1
2020-03-01 02:34:55 +03:00
RUN git clone https://github.com/bitwarden/web.git /vault
2020-03-01 02:34:55 +03:00
WORKDIR /vault
RUN git checkout "$VAULT_VERSION" && \
git submodule update --recursive --init
2020-03-01 02:34:55 +03:00
COPY --chown=node:node patches /patches
COPY --chown=node:node apply_patches.sh /apply_patches.sh
RUN bash /apply_patches.sh
# Build
RUN npm ci
RUN npm audit fix || true
2020-03-01 02:34:55 +03:00
RUN npm run dist
RUN printf '{"version":"%s"}' \
$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://github.com/dani-garcia/bw_web_builds.git 'v*' | tail -n1 | sed -E 's#.*?refs/tags/v##') \
> build/bwrs-version.json
2020-03-01 02:34:55 +03:00
# Delete debugging map files, optional
# RUN find build -name "*.map" -delete
# Prepare the final archives
RUN mv build web-vault
RUN tar -czvf "bw_web_vault.tar.gz" web-vault --owner=0 --group=0
2020-03-01 03:21:51 +03:00
# We copy the final result as a separate empty image so there's no need to download all the intermediate steps
# The result is included both uncompressed and as a tar.gz, to be able to use it in the docker images and the github releases directly
2020-03-01 02:34:55 +03:00
FROM scratch
# hadolint ignore=DL3010
2020-03-01 02:34:55 +03:00
COPY --from=build /vault/bw_web_vault.tar.gz /bw_web_vault.tar.gz
2020-03-01 03:21:51 +03:00
COPY --from=build /vault/web-vault /web-vault
# Added so docker create works, can't actually run a scratch image
CMD [""]