File tree Expand file tree Collapse file tree 1 file changed +20
-15
lines changed Expand file tree Collapse file tree 1 file changed +20
-15
lines changed Original file line number Diff line number Diff line change 1
- # Base build
2
- FROM rust:1.86-slim-bookworm AS build
1
+ # Using https://github.com/LukeMathWalker/cargo-chef for better layer caching
2
+
3
+ # Base image for planner and build - keep in sync with .github/workflows/server-ci.yml
4
+ FROM docker.io/rust:1.86-slim-bookworm AS chef
5
+ RUN cargo install cargo-chef
6
+ WORKDIR /app
7
+
8
+ # Build plan environment
9
+ FROM chef AS planner
10
+ COPY . .
11
+ RUN cargo chef prepare --recipe-path recipe.json
12
+
13
+ # Build environment
14
+ FROM chef AS build
3
15
4
16
RUN apt-get update && apt-get install -y \
5
17
build-essential=12.* \
@@ -16,24 +28,17 @@ RUN set -ex ; \
16
28
mkdir -p /home/appuser ;\
17
29
chown -R appuser: /home/appuser
18
30
19
- WORKDIR /app
31
+ COPY --from=planner /app/recipe.json recipe.json
20
32
21
- # Hack to enable docker caching
22
- COPY Cargo.toml .
23
- COPY Cargo.lock .
24
- COPY svix-server_derive svix-server_derive
25
- COPY svix-server/Cargo.toml svix-server/
26
- RUN set -ex ;\
27
- mkdir svix-server/src ;\
28
- echo 'fn main() { println!("Dummy!"); }' > svix-server/src/main.rs ;\
29
- cargo build --release ;\
30
- rm -rf svix-server/src
33
+ # Build dependencies - this is the caching Docker layer
34
+ RUN cargo chef cook --release --package svix-server --bin svix-server --recipe-path recipe.json
31
35
36
+ # Build the server
32
37
COPY . .
33
- RUN cargo build --release --frozen
38
+ RUN cargo build --release --package svix-server --bin svix-server -- frozen
34
39
35
40
# Production
36
- FROM debian:bookworm-slim AS prod
41
+ FROM docker.io/ debian:bookworm-slim AS prod
37
42
38
43
RUN set -ex ; \
39
44
mkdir -p /app ;\
You can’t perform that action at this time.
0 commit comments