From 873887c6ead61f3b166867d7a930e308078c1558 Mon Sep 17 00:00:00 2001 From: Richard Janis Goldschmidt Date: Tue, 20 Jun 2023 23:47:33 +0200 Subject: [PATCH] container: link against system rocksdb (#96) This commit installs librocksdb-dev inside the build image layer and sets the ROCKSDB_LIB_DIR environment variable so that librocksdb-sys is build against the pre-compiled artifacts rather than vendoring rocksdb. This should significantly speed up build times. Note that we transitively depend on `librocksdb-sys:0.8.3+7.4.4` which requires librocksdb 7.4.4, while debian bookworm provides librocksdb 7.8.3. This commit assumes that rocksdb is backward compatible (i.e. 7.8.3 can be used in place of 7.4.4). Note that this commit does not yet account for cross compilation on an x86 host targetting aarch64. --- .dockerignore | 7 +++++++ crates/astria-conductor/Dockerfile | 8 ++++---- crates/astria-sequencer-relayer/Dockerfile | 8 ++++---- 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..38ccd2bc29 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +target/ + + +# jetbrains +.idea +# direnv +.envrc diff --git a/crates/astria-conductor/Dockerfile b/crates/astria-conductor/Dockerfile index fa4bc7d0e1..65aed52fb7 100644 --- a/crates/astria-conductor/Dockerfile +++ b/crates/astria-conductor/Dockerfile @@ -1,12 +1,12 @@ -ARG DISTROLESS_TAG=latest # build stage -FROM --platform=$BUILDPLATFORM lukemathwalker/cargo-chef:latest-rust-bullseye AS chef +FROM --platform=$BUILDPLATFORM lukemathwalker/cargo-chef:latest-rust-bookworm AS chef WORKDIR /build/ RUN apt-get update \ && apt-get install -y --no-install-recommends \ libprotobuf-dev \ protobuf-compiler \ + librocksdb-dev \ clang \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -35,6 +35,7 @@ FROM chef as builder COPY --from=planner /build/recipe.json recipe.json ARG TARGETPLATFORM +ENV ROCKSDB_LIB_DIR=/usr/lib RUN case "$TARGETPLATFORM" in \ "linux/arm64") target="aarch64-unknown-linux-gnu" ;; \ "linux/amd64") target="x86_64-unknown-linux-gnu" ;; \ @@ -53,8 +54,7 @@ RUN cargo zigbuild --release \ RUN mkdir -p target/release \ && cp target/$(cat ./target_triple)/release/astria-conductor target/release/ -ARG DISTROLESS_TAG -FROM gcr.io/distroless/cc-debian11:$DISTROLESS_TAG +FROM debian:bookworm-slim WORKDIR /app/ EXPOSE 2450 COPY --from=builder /build/target/release/astria-conductor /usr/local/bin/astria-conductor diff --git a/crates/astria-sequencer-relayer/Dockerfile b/crates/astria-sequencer-relayer/Dockerfile index 89de4ec346..20d214462b 100644 --- a/crates/astria-sequencer-relayer/Dockerfile +++ b/crates/astria-sequencer-relayer/Dockerfile @@ -1,12 +1,12 @@ -ARG DISTROLESS_TAG=latest # build stage -FROM --platform=$BUILDPLATFORM lukemathwalker/cargo-chef:latest-rust-bullseye AS chef +FROM --platform=$BUILDPLATFORM lukemathwalker/cargo-chef:latest-rust-bookworm AS chef WORKDIR /build/ RUN apt-get update \ && apt-get install -y --no-install-recommends \ libprotobuf-dev \ protobuf-compiler \ + librocksdb-dev \ clang \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* @@ -35,6 +35,7 @@ FROM chef as builder COPY --from=planner /build/recipe.json recipe.json ARG TARGETPLATFORM +ENV ROCKSDB_LIB_DIR=/usr/lib RUN case "$TARGETPLATFORM" in \ "linux/arm64") target="aarch64-unknown-linux-gnu" ;; \ "linux/amd64") target="x86_64-unknown-linux-gnu" ;; \ @@ -53,8 +54,7 @@ RUN cargo zigbuild --release \ RUN mkdir -p target/release \ && cp target/$(cat ./target_triple)/release/astria-sequencer-relayer target/release/ -ARG DISTROLESS_TAG -FROM gcr.io/distroless/cc-debian11:$DISTROLESS_TAG +FROM debian:bookworm-slim WORKDIR /app/ EXPOSE 2450 COPY --from=builder /build/target/release/astria-sequencer-relayer /usr/local/bin/astria-sequencer-relayer