feat: docker build caching with cargo-chef

This commit is contained in:
realaravinth 2022-05-28 16:22:34 +05:30
parent 3710c8f653
commit a9f8cc24a6
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88

View file

@ -17,23 +17,32 @@ COPY Makefile /src/
COPY scripts /src/scripts COPY scripts /src/scripts
RUN make frontend RUN make frontend
FROM rust:latest as planner
RUN cargo install cargo-chef
WORKDIR /src
COPY . /src/
RUN cargo chef prepare --recipe-path recipe.json
FROM rust:latest as cacher
WORKDIR /src/
RUN cargo install cargo-chef
COPY --from=planner /src/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
FROM rust:latest as rust FROM rust:latest as rust
WORKDIR /src WORKDIR /src
RUN mkdir src && echo "fn main() {}" > src/main.rs COPY . .
COPY Cargo.toml . COPY --from=cacher /src/target target
RUN sed -i '/.*build.rs.*/d' Cargo.toml #COPY --from=cacher /src/db/db-core/target /src/db/db-core/target
COPY Cargo.lock . #COPY --from=cacher /src/db/db-sqlx-postgres/target /src/db/db-sqlx-postgres/target
COPY migrations /src/migrations #COPY --from=cacher /src/db/db-migrations/target /src/db/db-migrations/target
COPY sqlx-data.json /src/ #COPY --from=cacher /src/utils/cache-bust/target /src/utils/cache-bust/target
COPY src/tests-migrate.rs /src/src/tests-migrate.rs
COPY src/settings.rs /src/src/settings.rs
RUN cargo --version
RUN cargo build --release
COPY . /src
COPY --from=frontend /src/static/cache/bundle/ /src/static/cache/bundle/ COPY --from=frontend /src/static/cache/bundle/ /src/static/cache/bundle/
RUN cargo --version
RUN make cache-bust
RUN cargo build --release RUN cargo build --release
FROM debian:bullseye FROM debian:bullseye as mCaptcha
LABEL org.opencontainers.image.source https://github.com/mCaptcha/mCaptcha LABEL org.opencontainers.image.source https://github.com/mCaptcha/mCaptcha
RUN useradd -ms /bin/bash -u 1001 mcaptcha RUN useradd -ms /bin/bash -u 1001 mcaptcha
WORKDIR /home/mcaptcha WORKDIR /home/mcaptcha