FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef WORKDIR /app RUN apt update && apt install lld clang -y FROM chef as planner COPY . . RUN cargo chef prepare --recipe-path recipe.json FROM chef as builder COPY --from=planner /app/recipe.json recipe.json RUN cargo chef cook --release --recipe-path recipe.json COPY . . RUN cargo build --release --bin rss-reader RUN cargo install diesel_cli --no-default-features --features postgres # Runtime stage FROM debian:bookworm-slim AS runtime WORKDIR /app # Install OpenSSL - it is dynamically linked by some of our dependencies # Install ca-certificates - it is needed to verify TLS certificates # when establishing HTTPS connections RUN apt-get update -y \ && apt-get install -y openssl ca-certificates pkg-config\ && apt-get install -y libpq5 \ && apt-get autoremove -y \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* # Copy diesel_cli from builder to runtime COPY --from=builder /usr/local/cargo/bin/diesel /usr/local/cargo/bin/diesel COPY --from=builder /app/target/release/rss-reader rss-reader EXPOSE 8001 # COPY configuration configuration # ENV APP_ENVIRONMENT production # ENTRYPOINT ["./rss-reader"] ENTRYPOINT ["sh", "-c", "/app/rss-reader && diesel migration run"]