build: dockerize app, migrate on boot

This commit is contained in:
2026-06-04 00:07:55 +03:00
parent 91932d38ce
commit f8c56623a4
5 changed files with 83 additions and 2 deletions

View File

@@ -13,7 +13,11 @@ use axum::{
};
use sqlx::PgPool;
use tower_cookies::CookieManagerLayer;
use tower_http::{cors::CorsLayer, services::ServeDir, trace::TraceLayer};
use tower_http::{
cors::CorsLayer,
services::{ServeDir, ServeFile},
trace::TraceLayer,
};
use tracing::info;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -39,8 +43,10 @@ async fn main() -> Result<()> {
.init();
dotenvy::dotenv().ok();
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set");
let pool = PgPool::connect(&database_url).await.unwrap();
sqlx::migrate!().run(&pool).await?;
let file_repository = FileRepository::new(pool.clone())?;
let routes_file = routes_file(file_repository.clone())
.route_layer(middleware::from_fn(mw_require_auth))
@@ -67,7 +73,9 @@ async fn main() -> Result<()> {
.allow_credentials(true)
.allow_headers([header::CONTENT_TYPE]),
)
.fallback_service(ServeDir::new("./"));
.fallback_service(
ServeDir::new("/app/static").fallback(ServeFile::new("/app/static/index.html")),
);
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
info!("listening on {}", listener.local_addr().unwrap());