@@ -2,34 +2,23 @@ FROM rust:1.57.0 AS development
22RUN rustup component add rustfmt
33RUN rustup component add clippy
44
5- FROM rust:1.57.0 AS builder
6-
5+ # Using the official cargo-chef image
6+ FROM lukemathwalker/cargo-chef:latest-rust-1.61.0 AS chef
77WORKDIR /app
88
9- # Configure sql-client
10- RUN mkdir -p ./sql-client/src
11- RUN touch ./sql-client/src/lib.rs
12- ADD ./sql-client/Cargo.toml ./sql-client
13-
14- # Configure atcoder-client
15- RUN mkdir -p ./atcoder-client/src
16- RUN touch ./atcoder-client/src/lib.rs
17- ADD ./atcoder-client/Cargo.toml ./atcoder-client
9+ FROM chef AS planner
10+ COPY . .
11+ RUN cargo chef prepare --recipe-path recipe.json
1812
19- RUN mkdir ./src
20- RUN echo "fn main(){}" > ./src/main.rs
21- ADD ./Cargo.toml .
22- ADD ./Cargo.lock .
13+ FROM chef AS builder
14+ COPY --from=planner /app/recipe.json recipe.json
15+ RUN cargo chef cook --release --recipe-path recipe.json
2316
17+ COPY . .
2418RUN cargo build --release
2519
26- ADD ./src ./src
27- ADD ./sql-client ./sql-client
28- ADD ./atcoder-client ./atcoder-client
29- RUN cargo clean --release -p atcoder-client -p sql-client
30- RUN cargo build --release
31-
32- FROM rust:1.57.0 AS production
20+ # プロダクション用の Docker イメージをビルドする
21+ FROM rust:1.61.0 AS production
3322COPY --from=builder /app/target/release/batch_update /usr/bin/batch_update
3423COPY --from=builder /app/target/release/crawl_all_submissions /usr/bin/crawl_all_submissions
3524COPY --from=builder /app/target/release/crawl_for_virtual_contests /usr/bin/crawl_for_virtual_contests
@@ -42,6 +31,5 @@ COPY --from=builder /app/target/release/dump_json /usr/bin/dum
4231COPY --from=builder /app/target/release/fix_invalid_submissions /usr/bin/fix_invalid_submissions
4332COPY --from=builder /app/target/release/run_server /usr/bin/run_server
4433
45-
4634RUN apt-get update && apt-get install -y awscli postgresql-client
4735ADD ./scripts/sql-backup.sh /usr/bin/sql-backup.sh
0 commit comments