perf(backend): Cache build of dependencies
When building the Docker image, first compile the project with a fake main file, namely `dummy.rs`. Once dependencies are built, compile the actual project by switching back to `src/main.rs`. Signed-off-by: Lucien Cartier-Tilet <lucien@phundrak.com>
This commit is contained in:
parent
fd71b959f1
commit
8e925b884e
@ -15,3 +15,7 @@ serde = { version = "1.0", features = ["derive"] }
|
|||||||
dotenvy = "0.15"
|
dotenvy = "0.15"
|
||||||
gql_client = "1.0.7"
|
gql_client = "1.0.7"
|
||||||
human-panic = "1.1.0"
|
human-panic = "1.1.0"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "phuncache"
|
||||||
|
path = "src/main.rs"
|
||||||
|
14
Dockerfile
14
Dockerfile
@ -2,12 +2,20 @@ FROM rust:alpine
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY Cargo.toml /app/Cargo.toml
|
|
||||||
COPY Cargo.lock /app/Cargo.lock
|
|
||||||
COPY src /app/src
|
|
||||||
RUN apk update && apk add pkgconfig openssl-dev musl-dev
|
RUN apk update && apk add pkgconfig openssl-dev musl-dev
|
||||||
|
|
||||||
|
COPY Cargo.toml .
|
||||||
|
COPY dummy.rs .
|
||||||
|
|
||||||
|
# Cache building
|
||||||
|
RUN sed -i 's|src/main.rs|dummy.rs|' Cargo.toml
|
||||||
RUN cargo build --release
|
RUN cargo build --release
|
||||||
|
RUN cargo build
|
||||||
|
RUN sed -i 's|dummy.rs|src/main.rs|' Cargo.toml
|
||||||
|
|
||||||
|
# Building normally
|
||||||
|
COPY src src
|
||||||
|
RUN cargo build
|
||||||
RUN cargo install --path .
|
RUN cargo install --path .
|
||||||
|
|
||||||
ENTRYPOINT [ "phuncache" ]
|
ENTRYPOINT [ "phuncache" ]
|
||||||
|
Loading…
Reference in New Issue
Block a user