From fac300431a4e54b3fdcc969faf2cbc89e2491415 Mon Sep 17 00:00:00 2001 From: rm-dr <96270320+rm-dr@users.noreply.github.com> Date: Thu, 26 Mar 2026 19:49:36 -0700 Subject: [PATCH] Docker --- Cargo.lock | 3 +++ Cargo.toml | 2 ++ Dockerfile | 1 + crates/pile-value/Cargo.toml | 3 +++ crates/pile-value/build.rs | 13 ++++++++----- docker-compose.yml | 14 ++++++++++++++ 6 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 docker-compose.yml diff --git a/Cargo.lock b/Cargo.lock index c1dc4a0..3144df4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -894,6 +894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -2074,6 +2075,7 @@ dependencies = [ "pile-flac", "pile-io", "regex", + "reqwest", "serde", "serde_json", "smartstring", @@ -2298,6 +2300,7 @@ dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", diff --git a/Cargo.toml b/Cargo.toml index 288ba07..4246b68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,6 +87,8 @@ utoipa-swagger-ui = { version = "9.0.2", features = [ "debug-embed", "vendored", ] } +reqwest = { version = "0.12", features = ["blocking"] } + # Async & Parallelism tokio = { version = "1.49.0", features = ["full"] } diff --git a/Dockerfile b/Dockerfile index 23d4657..7a64a0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,6 +29,7 @@ RUN apt-get update && \ COPY --from=build \ /app/rust/target/release/pile \ + /app/rust/target/release/libpdfium.so \ /app/bin/ ENV PATH="/app/bin:$PATH" diff --git a/crates/pile-value/Cargo.toml b/crates/pile-value/Cargo.toml index 72c8f2f..c76fb7b 100644 --- a/crates/pile-value/Cargo.toml +++ b/crates/pile-value/Cargo.toml @@ -34,6 +34,9 @@ mime_guess = { workspace = true } serde = { workspace = true } strum = { workspace = true } +[build-dependencies] +reqwest = { workspace = true } + [features] default = [] pdfium = ["dep:pdfium-render"] diff --git a/crates/pile-value/build.rs b/crates/pile-value/build.rs index ecd79cd..cec89c2 100644 --- a/crates/pile-value/build.rs +++ b/crates/pile-value/build.rs @@ -69,11 +69,14 @@ fn main() { eprintln!("cargo:warning=Downloading PDFium from {url}"); - let status = std::process::Command::new("curl") - .args(["-L", "--fail", "-o", tgz_path.to_str().unwrap(), &url]) - .status() - .expect("failed to run curl"); - assert!(status.success(), "curl failed to download PDFium"); + let response = reqwest::blocking::get(&url).expect("failed to download PDFium"); + assert!( + response.status().is_success(), + "failed to download PDFium: {}", + response.status() + ); + let bytes = response.bytes().expect("failed to read PDFium response"); + std::fs::write(&tgz_path, &bytes).expect("failed to write pdfium.tgz"); let status = std::process::Command::new("tar") .args([ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e0e9528 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + pile: + #image: git.betalupi.com/mark/pile:latest + image: pile + container_name: pile + restart: unless-stopped + + ports: + - 7100:7100 + volumes: + - "./x.ignore/books:/data/books:ro" + - "./pile:/workdir" + + command: "pile server -c /data/books/pile.toml --workdir /workdir 0.0.0.0:7100"