| # 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"] | |