Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Vaultwarden
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
TeDomum
Vaultwarden
Commits
1a5c1979
Commit
1a5c1979
authored
6 years ago
by
Miroslav Prasil
Browse files
Options
Downloads
Patches
Plain Diff
Move Alpine Dockerfile to separate file
parent
cec9566d
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
Dockerfile
+18
-10
18 additions, 10 deletions
Dockerfile
Dockerfile.alpine
+80
-0
80 additions, 0 deletions
Dockerfile.alpine
with
98 additions
and
10 deletions
Dockerfile
+
18
−
10
View file @
1a5c1979
...
...
@@ -25,11 +25,19 @@ RUN npm run dist \
&&
mv
build /web-vault
########################## BUILD IMAGE ##########################
# Musl build image for statically compiled binary
FROM
clux/muslrust:nightly-2018-08-24
as
build
# We need to use the Rust build image, because
# we need the Rust compiler and Cargo tooling
FROM
rust
as
build
# Using bundled SQLite, no need to install it
# RUN apt-get update && apt-get install -y\
# sqlite3\
# --no-install-recommends\
# && rm -rf /var/lib/apt/lists/*
# Creates a dummy project used to grab dependencies
RUN
USER
=
root cargo init
--bin
RUN
USER
=
root cargo new
--bin
app
WORKDIR
/app
# Copies over *only* your manifests and vendored dependencies
COPY
./Cargo.* ./
...
...
@@ -53,17 +61,17 @@ RUN cargo build --release
######################## RUNTIME IMAGE ########################
# Create a new stage with a minimal image
# because we already have a binary built
FROM
alpine:3.8
FROM
debian:stretch-slim
ENV
ROCKET_ENV "staging"
ENV
ROCKET_WORKERS=10
ENV
SSL_CERT_DIR=/etc/ssl/certs
# Install needed libraries
RUN
apk add
\
openssl
\
ca-certificates
\
&&
rm
/var/cache/apk/
*
RUN
apt-get update
&&
apt-get
install
-y
\
openssl
\
ca-certificates
\
--no-install-recommends
\
&&
rm
-rf
/var/lib/apt/lists/
*
RUN
mkdir
/data
VOLUME
/data
...
...
@@ -74,7 +82,7 @@ EXPOSE 80
COPY
.env .
COPY
Rocket.toml .
COPY
--from=vault /web-vault ./web-vault
COPY
--from=build
/volume/target/x86_64-unknown-linux-musl
/release/bitwarden_rs .
COPY
--from=build
app/target
/release/bitwarden_rs .
# Configures the startup!
CMD
./bitwarden_rs
This diff is collapsed.
Click to expand it.
Dockerfile.alpine
0 → 100644
+
80
−
0
View file @
1a5c1979
# 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:8-alpine as vault
ENV VAULT_VERSION "v2.2.0"
ENV URL "https://github.com/bitwarden/web.git"
RUN apk add --update-cache --upgrade \
curl \
git \
tar
RUN git clone -b $VAULT_VERSION --depth 1 $URL web-build
WORKDIR /web-build
COPY /docker/set-vault-baseurl.patch /web-build/
RUN git apply set-vault-baseurl.patch
RUN npm run sub:init && npm install
RUN npm run dist \
&& mv build /web-vault
########################## BUILD IMAGE ##########################
# Musl build image for statically compiled binary
FROM clux/muslrust:nightly-2018-08-24 as build
# Creates a dummy project used to grab dependencies
RUN USER=root cargo init --bin
# Copies over *only* your manifests and vendored dependencies
COPY ./Cargo.* ./
COPY ./libs ./libs
COPY ./rust-toolchain ./rust-toolchain
# Builds your dependencies and removes the
# dummy project, except the target folder
# This folder contains the compiled dependencies
RUN cargo build --release
RUN find . -not -path "./target*" -delete
# Copies the complete project
# To avoid copying unneeded files, use .dockerignore
COPY . .
# Builds again, this time it'll just be
# your actual source files being built
RUN cargo build --release
######################## RUNTIME IMAGE ########################
# Create a new stage with a minimal image
# because we already have a binary built
FROM alpine:3.8
ENV ROCKET_ENV "staging"
ENV ROCKET_WORKERS=10
ENV SSL_CERT_DIR=/etc/ssl/certs
# Install needed libraries
RUN apk add \
openssl\
ca-certificates \
&& rm /var/cache/apk/*
RUN mkdir /data
VOLUME /data
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 Rocket.toml .
COPY --from=vault /web-vault ./web-vault
COPY --from=build /volume/target/x86_64-unknown-linux-musl/release/bitwarden_rs .
# Configures the startup!
CMD ./bitwarden_rs
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment