chore: refactored dockerfiles across repo to use cargo chef
e1331c96
8 file(s) · +72 −276
| 1 | - | FROM rust:1-slim-bookworm AS builder |
|
| 2 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 1 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 3 | 2 | WORKDIR /app |
|
| 4 | 3 | ||
| 5 | - | # Copy workspace manifests |
|
| 6 | - | COPY Cargo.toml Cargo.lock . |
|
| 7 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 8 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 9 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 10 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 11 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 12 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 13 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 14 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 15 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 16 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 17 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 18 | - | ||
| 19 | - | # Create stubs for dependency caching |
|
| 20 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 21 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 24 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 25 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 26 | - | done |
|
| 4 | + | FROM chef AS planner |
|
| 5 | + | COPY . . |
|
| 6 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 27 | 7 | ||
| 8 | + | FROM chef AS builder |
|
| 9 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 10 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 11 | + | RUN cargo chef cook --release --recipe-path recipe.json -p cellar |
|
| 12 | + | COPY . . |
|
| 28 | 13 | RUN cargo build --release -p cellar |
|
| 29 | - | ||
| 30 | - | # Copy real source |
|
| 31 | - | COPY crates/auth/src crates/auth/src |
|
| 32 | - | COPY crates/db/src crates/db/src |
|
| 33 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 34 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 35 | - | COPY apps/cellar/src apps/cellar/src |
|
| 36 | - | COPY apps/cellar/static apps/cellar/static |
|
| 37 | - | COPY apps/cellar/templates apps/cellar/templates |
|
| 38 | - | ||
| 39 | - | RUN touch apps/cellar/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p cellar |
|
| 40 | 14 | ||
| 41 | 15 | FROM debian:bookworm-slim |
|
| 42 | 16 | RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* |
| 1 | 1 | # Build from repo root: docker build -t feeds -f apps/feeds/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p feeds |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p feeds |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/auth/src crates/auth/src |
|
| 33 | - | COPY crates/db/src crates/db/src |
|
| 34 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 35 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 36 | - | COPY apps/feeds/src apps/feeds/src |
|
| 37 | - | COPY apps/feeds/static apps/feeds/static |
|
| 38 | - | COPY apps/feeds/askama.toml apps/feeds/askama.toml |
|
| 39 | - | ||
| 40 | - | RUN touch apps/feeds/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p feeds |
|
| 41 | 15 | ||
| 42 | 16 | FROM debian:bookworm-slim |
|
| 43 | 17 | RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* |
| 1 | 1 | # Build from repo root: docker build -t jotts -f apps/jotts/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p jotts |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p jotts |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/auth/src crates/auth/src |
|
| 33 | - | COPY crates/db/src crates/db/src |
|
| 34 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 35 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 36 | - | COPY apps/jotts/src apps/jotts/src |
|
| 37 | - | COPY apps/jotts/static apps/jotts/static |
|
| 38 | - | COPY apps/jotts/templates apps/jotts/templates |
|
| 39 | - | ||
| 40 | - | RUN touch apps/jotts/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p jotts |
|
| 41 | 15 | ||
| 42 | 16 | FROM debian:bookworm-slim |
|
| 43 | 17 | COPY --from=builder /app/target/release/jotts /usr/local/bin/jotts |
| 1 | 1 | # Build from repo root: docker build -t og -f apps/og/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p og |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p og |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 33 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 34 | - | COPY apps/og/src apps/og/src |
|
| 35 | - | COPY apps/og/templates apps/og/templates |
|
| 36 | - | COPY apps/og/static apps/og/static |
|
| 37 | - | ||
| 38 | - | RUN touch apps/og/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p og |
|
| 39 | 15 | ||
| 40 | 16 | FROM debian:bookworm-slim |
|
| 41 | 17 | RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* |
| 1 | 1 | # Build from repo root: docker build -t parcels -f apps/parcels/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p parcels |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p parcels |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/auth/src crates/auth/src |
|
| 33 | - | COPY crates/db/src crates/db/src |
|
| 34 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 35 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 36 | - | COPY apps/parcels/src apps/parcels/src |
|
| 37 | - | COPY apps/parcels/templates apps/parcels/templates |
|
| 38 | - | COPY apps/parcels/static apps/parcels/static |
|
| 39 | - | ||
| 40 | - | RUN touch apps/parcels/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p parcels |
|
| 41 | 15 | ||
| 42 | 16 | FROM debian:bookworm-slim |
|
| 43 | 17 | RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* |
| 1 | 1 | # Build from repo root: docker build -t posts -f apps/posts/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p posts |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p posts |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/auth/src crates/auth/src |
|
| 33 | - | COPY crates/db/src crates/db/src |
|
| 34 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 35 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 36 | - | COPY apps/posts/src apps/posts/src |
|
| 37 | - | COPY apps/posts/static apps/posts/static |
|
| 38 | - | COPY apps/posts/templates apps/posts/templates |
|
| 39 | - | ||
| 40 | - | RUN touch apps/posts/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p posts |
|
| 41 | 15 | ||
| 42 | 16 | FROM debian:bookworm-slim |
|
| 43 | 17 | COPY --from=builder /app/target/release/posts /usr/local/bin/posts |
| 1 | 1 | # Build from repo root: docker build -t shrink -f apps/shrink/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p shrink |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p shrink |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 33 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 34 | - | COPY apps/shrink/src apps/shrink/src |
|
| 35 | - | COPY apps/shrink/templates apps/shrink/templates |
|
| 36 | - | COPY apps/shrink/static apps/shrink/static |
|
| 37 | - | ||
| 38 | - | RUN touch apps/shrink/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p shrink |
|
| 39 | 15 | ||
| 40 | 16 | FROM debian:bookworm-slim |
|
| 41 | 17 | WORKDIR /app |
| 1 | 1 | # Build from repo root: docker build -t sipp -f apps/sipp/Dockerfile . |
|
| 2 | - | FROM rust:1-slim-bookworm AS builder |
|
| 3 | - | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 2 | + | FROM lukemathwalker/cargo-chef:latest-rust-1-slim-bookworm AS chef |
|
| 4 | 3 | WORKDIR /app |
|
| 5 | 4 | ||
| 6 | - | # Copy workspace manifests |
|
| 7 | - | COPY Cargo.toml Cargo.lock . |
|
| 8 | - | COPY crates/auth/Cargo.toml crates/auth/ |
|
| 9 | - | COPY crates/db/Cargo.toml crates/db/ |
|
| 10 | - | COPY crates/darkmatter-css/Cargo.toml crates/darkmatter-css/ |
|
| 11 | - | COPY apps/sipp/Cargo.toml apps/sipp/ |
|
| 12 | - | COPY apps/feeds/Cargo.toml apps/feeds/ |
|
| 13 | - | COPY apps/parcels/Cargo.toml apps/parcels/ |
|
| 14 | - | COPY apps/jotts/Cargo.toml apps/jotts/ |
|
| 15 | - | COPY apps/og/Cargo.toml apps/og/ |
|
| 16 | - | COPY apps/shrink/Cargo.toml apps/shrink/ |
|
| 17 | - | COPY apps/cellar/Cargo.toml apps/cellar/ |
|
| 18 | - | COPY apps/posts/Cargo.toml apps/posts/ |
|
| 19 | - | ||
| 20 | - | # Create stubs for dependency caching |
|
| 21 | - | RUN mkdir -p crates/auth/src && echo '' > crates/auth/src/lib.rs \ |
|
| 22 | - | && mkdir -p crates/db/src && echo '' > crates/db/src/lib.rs \ |
|
| 23 | - | && mkdir -p crates/darkmatter-css/src && echo '' > crates/darkmatter-css/src/lib.rs \ |
|
| 24 | - | && mkdir -p crates/darkmatter-css/assets \ |
|
| 25 | - | && for app in sipp feeds parcels jotts og shrink cellar posts; do \ |
|
| 26 | - | mkdir -p apps/$app/src && echo 'fn main() {}' > apps/$app/src/main.rs; \ |
|
| 27 | - | done |
|
| 5 | + | FROM chef AS planner |
|
| 6 | + | COPY . . |
|
| 7 | + | RUN cargo chef prepare --recipe-path recipe.json |
|
| 28 | 8 | ||
| 9 | + | FROM chef AS builder |
|
| 10 | + | RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* |
|
| 11 | + | COPY --from=planner /app/recipe.json recipe.json |
|
| 12 | + | RUN cargo chef cook --release --recipe-path recipe.json -p sipp-so |
|
| 13 | + | COPY . . |
|
| 29 | 14 | RUN cargo build --release -p sipp-so |
|
| 30 | - | ||
| 31 | - | # Copy real source |
|
| 32 | - | COPY crates/auth/src crates/auth/src |
|
| 33 | - | COPY crates/db/src crates/db/src |
|
| 34 | - | COPY crates/darkmatter-css/src crates/darkmatter-css/src |
|
| 35 | - | COPY crates/darkmatter-css/assets crates/darkmatter-css/assets |
|
| 36 | - | COPY apps/sipp/src apps/sipp/src |
|
| 37 | - | COPY apps/sipp/static apps/sipp/static |
|
| 38 | - | COPY apps/sipp/templates apps/sipp/templates |
|
| 39 | - | ||
| 40 | - | RUN touch apps/sipp/src/*.rs crates/auth/src/*.rs crates/db/src/*.rs crates/darkmatter-css/src/*.rs && cargo build --release -p sipp-so |
|
| 41 | 15 | ||
| 42 | 16 | FROM debian:bookworm-slim |
|
| 43 | 17 | COPY --from=builder /app/target/release/sipp /usr/local/bin/sipp |