diff --git a/Dockerfile b/Dockerfile index e4bd8ca..758fd81 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 191c49c..3cdc04c 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 0000000..e6dda4f --- /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