bootstrap rust services, auth, and compose stack
This commit is contained in:
13
apps/admin-ui/Cargo.toml
Normal file
13
apps/admin-ui/Cargo.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
[package]
|
||||
name = "admin-ui"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
axum.workspace = true
|
||||
stripstream-core = { path = "../../crates/core" }
|
||||
tokio.workspace = true
|
||||
tracing.workspace = true
|
||||
tracing-subscriber.workspace = true
|
||||
22
apps/admin-ui/Dockerfile
Normal file
22
apps/admin-ui/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
FROM rust:1-bookworm AS builder
|
||||
WORKDIR /app
|
||||
|
||||
COPY Cargo.toml ./
|
||||
COPY apps/api/Cargo.toml apps/api/Cargo.toml
|
||||
COPY apps/indexer/Cargo.toml apps/indexer/Cargo.toml
|
||||
COPY apps/admin-ui/Cargo.toml apps/admin-ui/Cargo.toml
|
||||
COPY crates/core/Cargo.toml crates/core/Cargo.toml
|
||||
COPY crates/parsers/Cargo.toml crates/parsers/Cargo.toml
|
||||
COPY apps/api/src apps/api/src
|
||||
COPY apps/indexer/src apps/indexer/src
|
||||
COPY apps/admin-ui/src apps/admin-ui/src
|
||||
COPY crates/core/src crates/core/src
|
||||
COPY crates/parsers/src crates/parsers/src
|
||||
|
||||
RUN cargo build --release -p admin-ui
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=builder /app/target/release/admin-ui /usr/local/bin/admin-ui
|
||||
EXPOSE 8082
|
||||
CMD ["/usr/local/bin/admin-ui"]
|
||||
32
apps/admin-ui/src/main.rs
Normal file
32
apps/admin-ui/src/main.rs
Normal file
@@ -0,0 +1,32 @@
|
||||
use axum::{response::Html, routing::get, Router};
|
||||
use stripstream_core::config::AdminUiConfig;
|
||||
use tracing::info;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
tracing_subscriber::fmt()
|
||||
.with_env_filter(
|
||||
std::env::var("RUST_LOG").unwrap_or_else(|_| "admin_ui=info,axum=info".to_string()),
|
||||
)
|
||||
.init();
|
||||
|
||||
let config = AdminUiConfig::from_env();
|
||||
let app = Router::new()
|
||||
.route("/health", get(health))
|
||||
.route("/", get(index));
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(&config.listen_addr).await?;
|
||||
info!(addr = %config.listen_addr, "admin ui listening");
|
||||
axum::serve(listener, app).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn health() -> &'static str {
|
||||
"ok"
|
||||
}
|
||||
|
||||
async fn index() -> Html<&'static str> {
|
||||
Html(
|
||||
"<html><body><h1>Stripstream Admin</h1><p>UI skeleton ready. Next: libraries, jobs, tokens screens.</p></body></html>",
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user