63 lines
1.7 KiB
Rust
63 lines
1.7 KiB
Rust
|
use dagger_rust::build::{BuildProfile, RustVersion, SlimImage};
|
||
|
|
||
|
#[tokio::main]
|
||
|
pub async fn main() -> eyre::Result<()> {
|
||
|
let client = dagger_sdk::connect().await?;
|
||
|
|
||
|
let rust_build = dagger_rust::leptos::LeptosBuild::new(client.clone());
|
||
|
|
||
|
let containers = rust_build
|
||
|
.build_release(
|
||
|
Some("testdata"),
|
||
|
RustVersion::Nightly,
|
||
|
&["crates/*"],
|
||
|
&[
|
||
|
"openssl",
|
||
|
"libssl-dev",
|
||
|
"pkg-config",
|
||
|
"musl-tools",
|
||
|
"ca-certificates",
|
||
|
],
|
||
|
vec![SlimImage::Debian {
|
||
|
image: "debian:bullseye".into(),
|
||
|
deps: vec![
|
||
|
"openssl".into(),
|
||
|
"libssl-dev".into(),
|
||
|
"pkg-config".into(),
|
||
|
"musl-tools".into(),
|
||
|
"ca-certificates".into(),
|
||
|
],
|
||
|
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||
|
}],
|
||
|
"hackernews_axum",
|
||
|
)
|
||
|
.await?;
|
||
|
|
||
|
let container = containers.first().unwrap();
|
||
|
|
||
|
container.directory("/mnt/app").export("output").await?;
|
||
|
|
||
|
let tunnel = client.host().tunnel(
|
||
|
container
|
||
|
.with_env_variable("LEPTOS_SITE_ADDR", "0.0.0.0:8080")
|
||
|
.with_exec(vec!["/mnt/app/hackernews_axum"])
|
||
|
.as_service(),
|
||
|
);
|
||
|
|
||
|
tunnel.start().await?;
|
||
|
|
||
|
let endpoint = tunnel
|
||
|
.endpoint_opts(
|
||
|
dagger_sdk::ServiceEndpointOptsBuilder::default()
|
||
|
.scheme("http")
|
||
|
.build()?,
|
||
|
)
|
||
|
.await?;
|
||
|
|
||
|
println!("running on: {endpoint}, press enter to stop");
|
||
|
|
||
|
std::io::stdin().read_line(&mut String::new()).unwrap();
|
||
|
|
||
|
Ok(())
|
||
|
}
|