9989534983
* Move Dockerfile.patch files to architecture dependent directories Need a way to distinguish between patches when we implement support for other architectures. Putting them in different paths seems simple and straight forward enough. * Add -a option to support arm32v7 and amd64 architectures Previous releases lacked support for compiling for arm32v7 architecture. In order to keep previous behaviour the default is set to amd64. Using the -a option, users can now choose between arm32v7 and amd64. If arm32v7 is used only the Buster release of debian is supported. The limitation is due to the libmariadb3:armhf dependency not being avaliable in earlier debian releases. * Update documentation to detail the -a option * Remove reference to local dirs * Set debian package to report correct architecture for arm32v7 build * Format arm32v7 Dockerfile.patch to match the amd64 * Handle architecture property in control file dynamically Similar to version, the architecture property in the control file should be handled dynamically. The build script will now replace the architecture prop from control.dist to match the choosen architecture.
117 lines
4.0 KiB
Diff
117 lines
4.0 KiB
Diff
--- ./git/docker/arm32v7/Dockerfile 2020-10-31 15:04:00.786589801 +0100
|
|
+++ ./Dockerfile 2020-11-06 17:44:35.204501362 +0100
|
|
@@ -54,23 +54,23 @@
|
|
&& echo 'rustflags = ["-L/usr/lib/arm-linux-gnueabihf"]' >> ~/.cargo/config
|
|
|
|
ENV CARGO_HOME "/root/.cargo"
|
|
ENV USER "root"
|
|
|
|
# Creates a dummy project used to grab dependencies
|
|
RUN USER=root cargo new --bin /app
|
|
WORKDIR /app
|
|
|
|
# Copies over *only* your manifests and build files
|
|
-COPY ./Cargo.* ./
|
|
-COPY ./rust-toolchain ./rust-toolchain
|
|
-COPY ./build.rs ./build.rs
|
|
+COPY git/Cargo.* ./
|
|
+COPY git/rust-toolchain ./rust-toolchain
|
|
+COPY git/build.rs ./build.rs
|
|
|
|
# NOTE: This should be the last apt-get/dpkg for this stage, since after this it will fail because of broken dependencies.
|
|
# For Diesel-RS migrations_macros to compile with MySQL/MariaDB we need to do some magic.
|
|
# We at least need libmariadb3:amd64 installed for the x86_64 version of libmariadb.so (client)
|
|
# We also need the libmariadb-dev-compat:amd64 but it can not be installed together with the :armhf version.
|
|
# What we can do is a force install, because nothing important is overlapping each other.
|
|
RUN apt-get install -y libmariadb3:amd64 && \
|
|
mkdir -pv /tmp/dpkg && \
|
|
cd /tmp/dpkg && \
|
|
apt-get download libmariadb-dev-compat:amd64 && \
|
|
@@ -90,64 +90,45 @@
|
|
RUN rustup target add armv7-unknown-linux-gnueabihf
|
|
|
|
# Builds your dependencies and removes the
|
|
# dummy project, except the target folder
|
|
# This folder contains the compiled dependencies
|
|
RUN cargo build --features ${DB} --release --target=armv7-unknown-linux-gnueabihf
|
|
RUN find . -not -path "./target*" -delete
|
|
|
|
# Copies the complete project
|
|
# To avoid copying unneeded files, use .dockerignore
|
|
-COPY . .
|
|
+COPY git .
|
|
|
|
# Make sure that we actually build the project
|
|
RUN touch src/main.rs
|
|
|
|
# Builds again, this time it'll just be
|
|
# your actual source files being built
|
|
RUN cargo build --features ${DB} --release --target=armv7-unknown-linux-gnueabihf
|
|
|
|
######################## RUNTIME IMAGE ########################
|
|
# Create a new stage with a minimal image
|
|
# because we already have a binary built
|
|
-FROM balenalib/armv7hf-debian:buster
|
|
+FROM debian:buster-slim
|
|
|
|
-ENV ROCKET_ENV "staging"
|
|
-ENV ROCKET_PORT=80
|
|
-ENV ROCKET_WORKERS=10
|
|
-
|
|
-RUN [ "cross-build-start" ]
|
|
-
|
|
-# Install needed libraries
|
|
-RUN apt-get update && apt-get install -y \
|
|
- --no-install-recommends \
|
|
- openssl \
|
|
- ca-certificates \
|
|
- curl \
|
|
- sqlite3 \
|
|
- libmariadb-dev-compat \
|
|
- libpq5 \
|
|
- && rm -rf /var/lib/apt/lists/*
|
|
-
|
|
-RUN mkdir /data
|
|
-
|
|
-RUN [ "cross-build-end" ]
|
|
-
|
|
-VOLUME /data
|
|
-EXPOSE 80
|
|
-EXPOSE 3012
|
|
-
|
|
-# Copies the files from the context (Rocket.toml file and web-vault)
|
|
-# and the binary from the "build" stage to the current stage
|
|
-COPY Rocket.toml .
|
|
-COPY --from=vault /web-vault ./web-vault
|
|
-COPY --from=build /app/target/armv7-unknown-linux-gnueabihf/release/bitwarden_rs .
|
|
-
|
|
-COPY docker/healthcheck.sh /healthcheck.sh
|
|
-COPY docker/start.sh /start.sh
|
|
-
|
|
-HEALTHCHECK --interval=60s --timeout=10s CMD ["/healthcheck.sh"]
|
|
-
|
|
-# Configures the startup!
|
|
-WORKDIR /
|
|
-CMD ["/start.sh"]
|
|
+# Create package directory
|
|
+RUN mkdir -p /bitwarden_package/DEBIAN
|
|
+RUN mkdir -p /bitwarden_package/usr/local/bin
|
|
+RUN mkdir -p /bitwarden_package/usr/lib/systemd/system
|
|
+RUN mkdir -p /bitwarden_package/etc/bitwarden_rs
|
|
+RUN mkdir -p /bitwarden_package/usr/share/bitwarden_rs
|
|
+
|
|
+WORKDIR /bitwarden_package
|
|
+
|
|
+COPY debian/control /bitwarden_package/DEBIAN/control
|
|
+COPY debian/postinst /bitwarden_package/DEBIAN/postinst
|
|
+COPY debian/conffiles /bitwarden_package/DEBIAN/conffiles
|
|
+COPY git/Rocket.toml /bitwarden_package/etc/bitwarden_rs
|
|
+COPY debian/config.env /bitwarden_package/etc/bitwarden_rs
|
|
+COPY debian/bitwarden_rs.service /bitwarden_package/usr/lib/systemd/system
|
|
+COPY --from=vault /web-vault /bitwarden_package/usr/share/bitwarden_rs/web-vault
|
|
+COPY --from=build app/target/armv7-unknown-linux-gnueabihf/release/bitwarden_rs /bitwarden_package/usr/local/bin
|
|
+
|
|
+# Create the package
|
|
+RUN dpkg-deb --build . bitwarden-rs.deb
|
|
|