]> Repositorios git - scryer-prolog.git/commitdiff
Switched to cargo-chef for preparing the Docker image
authorpanasenco <[email protected]>
Mon, 12 Apr 2021 21:54:15 +0000 (14:54 -0700)
committerpanasenco <[email protected]>
Tue, 13 Apr 2021 00:35:20 +0000 (17:35 -0700)
Dockerfile

index 4ae378a5f1a2fcd56d158eb7df91275e0c580070..a2469ebc810f15ef67cf3af3599ce6e9e47e2dae 100755 (executable)
@@ -1,30 +1,24 @@
-# Based on https://hub.docker.com/_/rust?tab=description and https://blog.sedrik.se/posts/my-docker-setup-for-rust/\r
-\r
-# The first container is for build purposes only.\r
-FROM rust as builder\r
-\r
-WORKDIR /usr/src/scryer-prolog\r
-\r
-# Using a dummy build.rs and src/main.rs with your Cargo.toml lets Docker cache your Rust dependencies and not rebuild\r
-# them every time.\r
-COPY Cargo.toml .\r
-COPY Cargo.lock .\r
-RUN mkdir -p src\r
-RUN echo "fn main() {}" > src/main.rs\r
-RUN echo "fn main() {}" > build.rs\r
-RUN cargo build --release\r
-\r
-# We need to touch our real main.rs and build.rs files or else\r
-# docker will use the cached ones.\r
-COPY . .\r
-RUN touch src/main.rs\r
-RUN touch build.rs\r
-\r
-RUN cargo build --release\r
-\r
-RUN ls ./target/release\r
-\r
-# Finally, copy the scryer-prolog executable to a slimmer container.\r
-FROM debian:buster-slim\r
-COPY --from=builder /usr/src/scryer-prolog/target/release/scryer-prolog /usr/local/bin/scryer-prolog\r
-CMD ["scryer-prolog"]\r
+# 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"]