Skip to content

A cargo subcommand to build dependencies, helps speed up docker builds by allowing dependencies to be built earlier and cached.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Standard-Cognition/cargo-build-deps

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cargo-build-deps

Build Status

This tool extends Cargo to allow you to build only the dependencies in a given rust project. This is useful for docker builds where each build step is cached. The time it takes to build dependencies is often a significant portion of the overall build time. Therefore it is beneficial in docker builds to build dependencies in a separate step earlier than the main build. Since the dependency building step will be cached, dependencies will not need to be rebuilt when the project's own source code changes.

Inspired by (http://atodorov.org/blog/2017/08/30/speeding-up-rust-builds-inside-docker/)

Notice

  • This is a fork of @nacardin's repository, which appears be unmaintained at the moment.
  • cargo-build-deps now requires a nightly version of Rust.

Install

$ cargo +nightly install --git https://github.com/romac/cargo-build-deps.git

Usage

$ cargo +nightly build-deps

Example

Change Dockerfile from

FROM rust:1.23 as rust-builder
RUN mkdir /tmp/PROJECT_NAME
WORKDIR /tmp/PROJECT_NAME
COPY . .
RUN cargo build  --release

to

FROM rust:1.23 as rust-builder
RUN cargo install cargo-build-deps
RUN cd /tmp && USER=root cargo new --bin PROJECT_NAME
WORKDIR /tmp/PROJECT_NAME
COPY Cargo.toml Cargo.lock ./
RUN cargo build-deps --release
COPY src /tmp/PROJECT_NAME/src
RUN cargo build  --release

License

Licensed under either of these:

Contributing

Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

About

A cargo subcommand to build dependencies, helps speed up docker builds by allowing dependencies to be built earlier and cached.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%