mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-06 13:02:55 +00:00
Integrate cargo-chef into Dockerfile (#10782)
## Problem The build of the neon container image is not caching any part of the rust build, making it fairly slow. ## Summary of changes Cache dependency building using cargo-chef.
This commit is contained in:
16
Dockerfile
16
Dockerfile
@@ -50,6 +50,14 @@ RUN set -e \
|
|||||||
&& rm -rf pg_install/build \
|
&& rm -rf pg_install/build \
|
||||||
&& tar -C pg_install -czf /home/nonroot/postgres_install.tar.gz .
|
&& tar -C pg_install -czf /home/nonroot/postgres_install.tar.gz .
|
||||||
|
|
||||||
|
# Prepare cargo-chef recipe
|
||||||
|
FROM $REPOSITORY/$IMAGE:$TAG AS plan
|
||||||
|
WORKDIR /home/nonroot
|
||||||
|
|
||||||
|
COPY --chown=nonroot . .
|
||||||
|
|
||||||
|
RUN cargo chef prepare --recipe-path recipe.json
|
||||||
|
|
||||||
# Build neon binaries
|
# Build neon binaries
|
||||||
FROM $REPOSITORY/$IMAGE:$TAG AS build
|
FROM $REPOSITORY/$IMAGE:$TAG AS build
|
||||||
WORKDIR /home/nonroot
|
WORKDIR /home/nonroot
|
||||||
@@ -63,9 +71,15 @@ COPY --from=pg-build /home/nonroot/pg_install/v16/include/postgresql/server pg_i
|
|||||||
COPY --from=pg-build /home/nonroot/pg_install/v17/include/postgresql/server pg_install/v17/include/postgresql/server
|
COPY --from=pg-build /home/nonroot/pg_install/v17/include/postgresql/server pg_install/v17/include/postgresql/server
|
||||||
COPY --from=pg-build /home/nonroot/pg_install/v16/lib pg_install/v16/lib
|
COPY --from=pg-build /home/nonroot/pg_install/v16/lib pg_install/v16/lib
|
||||||
COPY --from=pg-build /home/nonroot/pg_install/v17/lib pg_install/v17/lib
|
COPY --from=pg-build /home/nonroot/pg_install/v17/lib pg_install/v17/lib
|
||||||
|
COPY --from=plan /home/nonroot/recipe.json recipe.json
|
||||||
|
|
||||||
|
ARG ADDITIONAL_RUSTFLAGS=""
|
||||||
|
|
||||||
|
RUN set -e \
|
||||||
|
&& RUSTFLAGS="-Clinker=clang -Clink-arg=-fuse-ld=mold -Clink-arg=-Wl,--no-rosegment -Cforce-frame-pointers=yes ${ADDITIONAL_RUSTFLAGS}" cargo chef cook --locked --release --recipe-path recipe.json
|
||||||
|
|
||||||
COPY --chown=nonroot . .
|
COPY --chown=nonroot . .
|
||||||
|
|
||||||
ARG ADDITIONAL_RUSTFLAGS
|
|
||||||
RUN set -e \
|
RUN set -e \
|
||||||
&& RUSTFLAGS="-Clinker=clang -Clink-arg=-fuse-ld=mold -Clink-arg=-Wl,--no-rosegment -Cforce-frame-pointers=yes ${ADDITIONAL_RUSTFLAGS}" cargo build \
|
&& RUSTFLAGS="-Clinker=clang -Clink-arg=-fuse-ld=mold -Clink-arg=-Wl,--no-rosegment -Cforce-frame-pointers=yes ${ADDITIONAL_RUSTFLAGS}" cargo build \
|
||||||
--bin pg_sni_router \
|
--bin pg_sni_router \
|
||||||
|
|||||||
@@ -300,6 +300,7 @@ ARG CARGO_HAKARI_VERSION=0.9.33
|
|||||||
ARG CARGO_DENY_VERSION=0.16.2
|
ARG CARGO_DENY_VERSION=0.16.2
|
||||||
ARG CARGO_HACK_VERSION=0.6.33
|
ARG CARGO_HACK_VERSION=0.6.33
|
||||||
ARG CARGO_NEXTEST_VERSION=0.9.85
|
ARG CARGO_NEXTEST_VERSION=0.9.85
|
||||||
|
ARG CARGO_CHEF_VERSION=0.1.71
|
||||||
ARG CARGO_DIESEL_CLI_VERSION=2.2.6
|
ARG CARGO_DIESEL_CLI_VERSION=2.2.6
|
||||||
RUN curl -sSO https://static.rust-lang.org/rustup/dist/$(uname -m)-unknown-linux-gnu/rustup-init && whoami && \
|
RUN curl -sSO https://static.rust-lang.org/rustup/dist/$(uname -m)-unknown-linux-gnu/rustup-init && whoami && \
|
||||||
chmod +x rustup-init && \
|
chmod +x rustup-init && \
|
||||||
@@ -314,6 +315,7 @@ RUN curl -sSO https://static.rust-lang.org/rustup/dist/$(uname -m)-unknown-linux
|
|||||||
cargo install cargo-deny --locked --version ${CARGO_DENY_VERSION} && \
|
cargo install cargo-deny --locked --version ${CARGO_DENY_VERSION} && \
|
||||||
cargo install cargo-hack --version ${CARGO_HACK_VERSION} && \
|
cargo install cargo-hack --version ${CARGO_HACK_VERSION} && \
|
||||||
cargo install cargo-nextest --version ${CARGO_NEXTEST_VERSION} && \
|
cargo install cargo-nextest --version ${CARGO_NEXTEST_VERSION} && \
|
||||||
|
cargo install cargo-chef --locked --version ${CARGO_CHEF_VERSION} && \
|
||||||
cargo install diesel_cli --version ${CARGO_DIESEL_CLI_VERSION} \
|
cargo install diesel_cli --version ${CARGO_DIESEL_CLI_VERSION} \
|
||||||
--features postgres-bundled --no-default-features && \
|
--features postgres-bundled --no-default-features && \
|
||||||
rm -rf /home/nonroot/.cargo/registry && \
|
rm -rf /home/nonroot/.cargo/registry && \
|
||||||
|
|||||||
Reference in New Issue
Block a user