From bec8d36961c18c4cfe2a51c275baa9be1ba2d074 Mon Sep 17 00:00:00 2001 From: panasenco Date: Mon, 12 Apr 2021 14:54:15 -0700 Subject: [PATCH] Switched to cargo-chef for preparing the Docker image --- Dockerfile | 54 ++++++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4ae378a5..a2469ebc 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,24 @@ -# Based on https://hub.docker.com/_/rust?tab=description and https://blog.sedrik.se/posts/my-docker-setup-for-rust/ - -# The first container is for build purposes only. -FROM rust as builder - -WORKDIR /usr/src/scryer-prolog - -# Using a dummy build.rs and src/main.rs with your Cargo.toml lets Docker cache your Rust dependencies and not rebuild -# them every time. -COPY Cargo.toml . -COPY Cargo.lock . -RUN mkdir -p src -RUN echo "fn main() {}" > src/main.rs -RUN echo "fn main() {}" > build.rs -RUN cargo build --release - -# We need to touch our real main.rs and build.rs files or else -# docker will use the cached ones. -COPY . . -RUN touch src/main.rs -RUN touch build.rs - -RUN cargo build --release - -RUN ls ./target/release - -# Finally, copy the scryer-prolog executable to a slimmer container. -FROM debian:buster-slim -COPY --from=builder /usr/src/scryer-prolog/target/release/scryer-prolog /usr/local/bin/scryer-prolog -CMD ["scryer-prolog"] +# See https://github.com/LukeMathWalker/cargo-chef +FROM lukemathwalker/cargo-chef as planner +WORKDIR /scryer-prolog +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +FROM lukemathwalker/cargo-chef as cacher +WORKDIR /scryer-prolog +COPY --from=planner /scryer-prolog/recipe.json recipe.json +RUN cargo chef cook --release --recipe-path recipe.json + +FROM rust as builder +WORKDIR /scryer-prolog +COPY . . +# Copy over the cached dependencies +COPY --from=cacher /scryer-prolog/target target +COPY --from=cacher $CARGO_HOME $CARGO_HOME +RUN cargo build --release --bin scryer-prolog + +FROM debian:stable-slim +WORKDIR scryer-prolog +COPY --from=builder /scryer-prolog/target/release/scryer-prolog /usr/local/bin +ENV RUST_BACKTRACE=1 +ENTRYPOINT ["/usr/local/bin/scryer-prolog"] -- 2.54.0