feat: docker & docker-compose example

This commit is contained in:
Per Stark
2025-05-05 13:44:57 +02:00
parent 6ad625befc
commit 322d1ec318
7 changed files with 163 additions and 271 deletions

View File

@@ -22,8 +22,10 @@ chrono = { version = "0.4.39", features = ["serde"] }
text-splitter = "0.18.1"
url = { version = "2.5.2", features = ["serde"] }
uuid = { version = "1.10.0", features = ["v4", "serde"] }
headless_chrome = { git = "https://github.com/rust-headless-chrome/rust-headless-chrome", features = ["fetch"] }
headless_chrome = "1.0.17"
common = { path = "../common" }
composite-retrieval = { path = "../composite-retrieval" }
[features]
docker = []

View File

@@ -16,7 +16,8 @@ use common::{
},
};
use dom_smoothie::{Article, Readability, TextMode};
use headless_chrome::Browser;
use headless_chrome::{Browser, LaunchOptionsBuilder};
use std::io::{Seek, SeekFrom};
use tempfile::NamedTempFile;
use tracing::{error, info};
@@ -76,7 +77,6 @@ pub async fn to_text_content(
}
}
}
use std::io::{Seek, SeekFrom}; // <-- Add Seek and SeekFrom
/// Fetches web content from a URL, extracts the main article text as Markdown,
/// captures a screenshot, and stores the screenshot returning [`FileInfo`].
@@ -106,7 +106,22 @@ async fn fetch_article_from_url(
// Instantiate timer
let now = Instant::now();
// Setup browser, navigate and wait
let browser = Browser::default()?;
let browser = {
#[cfg(feature = "docker")]
{
// Use this when compiling for docker
let options = LaunchOptionsBuilder::default()
.sandbox(false)
.build()
.map_err(|e| AppError::InternalError(e.to_string()))?;
Browser::new(options)?
}
#[cfg(not(feature = "docker"))]
{
// Use this otherwise
Browser::default()?
}
};
let tab = browser.new_tab()?;
let page = tab.navigate_to(url)?;
let loaded_page = page.wait_until_navigated()?;