From 818b5112678c15b764be1629d33bbc15aa0a3fcf Mon Sep 17 00:00:00 2001 From: Miroslav Prasil Date: Wed, 18 Apr 2018 12:44:28 +0100 Subject: [PATCH] Fetch Vault from upstream when building Docker image --- Dockerfile | 29 ++++++++++++++++++++++++++++- README.md | 2 ++ web-vault/settings.Production.json | 9 +++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 web-vault/settings.Production.json diff --git a/Dockerfile b/Dockerfile index e4bd8ca6..758fd813 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,33 @@ # Using multistage build: # https://docs.docker.com/develop/develop-images/multistage-build/ # https://whitfin.io/speeding-up-rust-docker-builds/ +####################### VAULT BUILD IMAGE ####################### +FROM node:9-alpine as vault + +ENV VAULT_VERSION "1.26.0" +ENV URL "https://github.com/bitwarden/web/archive/v${VAULT_VERSION}.tar.gz" + +RUN apk add --update-cache --upgrade \ + curl \ + git \ + tar \ + && npm install -g \ + gulp-cli \ + gulp + +RUN mkdir /web-build \ + && cd /web-build \ + && curl -L "${URL}" | tar -xvz --strip-components=1 + +WORKDIR /web-build + +COPY /web-vault/settings.Production.json /web-build/ + +RUN git config --global url."https://github.com/".insteadOf ssh://git@github.com/ \ + && npm install \ + && gulp dist:selfHosted \ + && mv dist /web-vault + ########################## BUILD IMAGE ########################## # We need to use the Rust build image, because # we need the Rust compiler and Cargo tooling @@ -53,7 +80,7 @@ EXPOSE 80 # Copies the files from the context (env file and web-vault) # and the binary from the "build" stage to the current stage COPY .env . -COPY web-vault ./web-vault +COPY --from=vault /web-vault ./web-vault COPY --from=build app/target/release/bitwarden_rs . # Configures the startup! diff --git a/README.md b/README.md index 191c49ce..3cdc04c0 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ cargo build ``` ## How to update the web-vault used +If you're using docker image, you can just update `VAULT_VERSION` variable in Dockerfile and rebuild the image. + Install `node.js` and either `yarn` or `npm` (usually included with node) Clone the web-vault outside the project: diff --git a/web-vault/settings.Production.json b/web-vault/settings.Production.json new file mode 100644 index 00000000..e6dda4fd --- /dev/null +++ b/web-vault/settings.Production.json @@ -0,0 +1,9 @@ +{ + "appSettings": { + "apiUri": "/api", + "identityUri": "/identity", + "iconsUri": "/icons", + "stripeKey": "", + "braintreeKey": "" + } +} \ No newline at end of file