mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
docker
This commit is contained in:
parent
652fd43f36
commit
3ffcb664d2
2 changed files with 29 additions and 3 deletions
20
flake.nix
20
flake.nix
|
|
@ -27,7 +27,7 @@
|
||||||
pkgs = (import nixpkgs) {
|
pkgs = (import nixpkgs) {
|
||||||
inherit system overlays;
|
inherit system overlays;
|
||||||
};
|
};
|
||||||
inherit (pkgs) lib callPackage;
|
inherit (pkgs) lib callPackage dockerTools;
|
||||||
|
|
||||||
src = lib.sources.sourceByRegex ./. ["Cargo.*" "(src|build|images|script|style)(/.*)?" "sqlx-data.json"];
|
src = lib.sources.sourceByRegex ./. ["Cargo.*" "(src|build|images|script|style)(/.*)?" "sqlx-data.json"];
|
||||||
nodeSrc = lib.sources.sourceByRegex ./. ["package.*"];
|
nodeSrc = lib.sources.sourceByRegex ./. ["package.*"];
|
||||||
|
|
@ -51,6 +51,24 @@
|
||||||
'';
|
'';
|
||||||
nativeBuildInputs = with pkgs; [pkg-config openssl];
|
nativeBuildInputs = with pkgs; [pkg-config openssl];
|
||||||
};
|
};
|
||||||
|
docker = dockerTools.buildLayeredImage {
|
||||||
|
name = "demostf/frontend";
|
||||||
|
tag = "latest";
|
||||||
|
maxLayers = 5;
|
||||||
|
contents = [
|
||||||
|
frontend
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
Cmd = ["frontend"];
|
||||||
|
ExposedPorts = {
|
||||||
|
"80/tcp" = {};
|
||||||
|
};
|
||||||
|
Env = [
|
||||||
|
"LISTEN_ADDRESS=0.0.0.0"
|
||||||
|
"LISTEN_PORT=80"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
OPENSSL_NO_VENDOR = 1;
|
OPENSSL_NO_VENDOR = 1;
|
||||||
|
|
|
||||||
12
src/main.rs
12
src/main.rs
|
|
@ -45,6 +45,8 @@ use std::net::SocketAddr;
|
||||||
use std::os::unix::fs::PermissionsExt;
|
use std::os::unix::fs::PermissionsExt;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use steam_openid::SteamOpenId;
|
use steam_openid::SteamOpenId;
|
||||||
|
use tokio::signal;
|
||||||
|
use tokio::signal::ctrl_c;
|
||||||
use tower_http::trace::TraceLayer;
|
use tower_http::trace::TraceLayer;
|
||||||
use tracing::{error, info, info_span};
|
use tracing::{error, info, info_span};
|
||||||
use tracing_subscriber::{
|
use tracing_subscriber::{
|
||||||
|
|
@ -157,12 +159,18 @@ async fn main() -> Result<()> {
|
||||||
.fallback(handler_404)
|
.fallback(handler_404)
|
||||||
.with_state(state);
|
.with_state(state);
|
||||||
let service = app.into_make_service();
|
let service = app.into_make_service();
|
||||||
|
let ctrl_c = async {
|
||||||
|
ctrl_c().await.expect("failed to install Ctrl+C handler");
|
||||||
|
};
|
||||||
|
|
||||||
match config.listen {
|
match config.listen {
|
||||||
Listen::Tcp { address, port } => {
|
Listen::Tcp { address, port } => {
|
||||||
let addr = SocketAddr::from((address, port));
|
let addr = SocketAddr::from((address, port));
|
||||||
info!("listening on {}", addr);
|
info!("listening on {}", addr);
|
||||||
Server::bind(&addr).serve(service).await?;
|
Server::bind(&addr)
|
||||||
|
.serve(service)
|
||||||
|
.with_graceful_shutdown(ctrl_c)
|
||||||
|
.await?;
|
||||||
}
|
}
|
||||||
Listen::Socket { path } => {
|
Listen::Socket { path } => {
|
||||||
info!("listening on {}", path.display());
|
info!("listening on {}", path.display());
|
||||||
|
|
@ -172,7 +180,7 @@ async fn main() -> Result<()> {
|
||||||
let socket = Server::bind_unix(&path)?;
|
let socket = Server::bind_unix(&path)?;
|
||||||
set_permissions(&path, Permissions::from_mode(0o666))?;
|
set_permissions(&path, Permissions::from_mode(0o666))?;
|
||||||
|
|
||||||
socket.serve(service).await?;
|
socket.serve(service).with_graceful_shutdown(ctrl_c).await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue