feat: add the hot-reload on backend crate
This commit is contained in:
@ -5,4 +5,9 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
axum = "0.7.6"
|
||||
listenfd = "1.0.1"
|
||||
tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread"] }
|
||||
|
||||
[dev-dependencies]
|
||||
cargo-watch = "8.5.2"
|
||||
systemfd = "0.4.3"
|
||||
|
19
crates/backend/README.md
Normal file
19
crates/backend/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Backend
|
||||
|
||||
Ceci est un serveur backend, basé sur axum, et permettant d'offrir une gestion centralisée des accès aux données.
|
||||
|
||||
## Prérequis
|
||||
|
||||
En développement, le mécanisme de hot-reload nécessite de disposer de `cargo-watch` et `systemfd`. Pour les installer, exécutez la commande suivante :
|
||||
|
||||
```bash
|
||||
cargo install cargo-watch systemfd
|
||||
```
|
||||
|
||||
## Développement
|
||||
|
||||
Pour lancer le serveur en mode développement, exécutez la commande suivante :
|
||||
|
||||
```bash
|
||||
systemfd --no-pid -s http::3030 -- cargo watch -x 'run --bin backend'
|
||||
```
|
@ -1,9 +1,23 @@
|
||||
use listenfd::ListenFd;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
use backend::get_router;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let app = get_router();
|
||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap();
|
||||
|
||||
let mut listenfd = ListenFd::from_env();
|
||||
|
||||
let listener = match listenfd.take_tcp_listener(0).unwrap() {
|
||||
// if we are given a tcp listener on listen fd 0, we use that one
|
||||
Some(listener) => {
|
||||
listener.set_nonblocking(true).unwrap();
|
||||
TcpListener::from_std(listener).unwrap()
|
||||
}
|
||||
// otherwise fall back to local listening
|
||||
None => TcpListener::bind("0.0.0.0:8080").await.unwrap(),
|
||||
};
|
||||
|
||||
println!("Listening on {}", listener.local_addr().unwrap());
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
|
Reference in New Issue
Block a user