# syntax=docker/dockerfile:1.6 FROM rust:1.92.0-bookworm AS builder WORKDIR /workspace RUN apt-get update \ && apt-get install -y --no-install-recommends pkg-config libssl-dev ca-certificates \ && rm -rf /var/lib/apt/lists/* # Copy source (includes Tomato-Novel-Official-API as subdir in the build context) COPY . /workspace/Tomato-Novel-Downloader # Move the private dependency to expected sibling path RUN if [ -d "/workspace/Tomato-Novel-Downloader/Tomato-Novel-Official-API" ]; then \ mv /workspace/Tomato-Novel-Downloader/Tomato-Novel-Official-API /workspace/Tomato-Novel-Official-API; \ fi WORKDIR /workspace/Tomato-Novel-Downloader RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/usr/local/cargo/git \ cargo build --release --no-default-features --features official-api,tts,docker FROM debian:bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /workspace/Tomato-Novel-Downloader/target/release/tomato-novel-downloader /app/tomato-novel-downloader COPY docker-entrypoint-webui.sh /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh ENV TOMATO_WEB_ADDR=0.0.0.0:18423 ENV TOMATO_DATA_DIR= ENV TOMATO_WEB_PASSWORD= EXPOSE 18423 ENTRYPOINT ["/app/entrypoint.sh"]