This commit is contained in:
2025-12-26 01:23:31 +01:00
parent 4d73a963df
commit 3be3fe5c82
4 changed files with 53 additions and 3 deletions

49
Dockerfile Normal file
View File

@@ -0,0 +1,49 @@
# syntax=docker/dockerfile:1
# ---- Frontend build (Vite + React, pnpm) ----
FROM node:20-alpine AS frontend-build
WORKDIR /app/frontend
# Enable pnpm via Corepack
RUN corepack enable
# Install deps (cache-friendly)
COPY frontend/package.json frontend/pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
# Build
COPY frontend/ ./
RUN pnpm build
# ---- Backend build (Rust + Actix) ----
FROM rust:1.92-bookworm AS backend-build
WORKDIR /app
# Cache Rust deps
COPY Cargo.toml Cargo.lock ./
COPY src ./src
COPY scp_core ./scp_core
# If you have a workspace / extra crates, copy them too (adjust):
# COPY crates ./crates
RUN cargo build --release
# ---- Runtime image ----
FROM debian:bookworm-slim AS runtime
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Adjust binary name
COPY --from=backend-build /app/target/release/myapp /app/myapp
# Match your Actix static path: ./frontend/dist
COPY --from=frontend-build /app/frontend/dist /app/frontend/dist
ENV RUST_LOG=info
ENV HOST=0.0.0.0
EXPOSE 8080
CMD ["/app/myapp"]

View File

@@ -1,5 +1,4 @@
import { createFileRoute } from "@tanstack/react-router";
import logo from "../logo.svg";
export const Route = createFileRoute("/")({
component: App,

View File

@@ -10,7 +10,7 @@ import {
} from "@/components/ui/table";
import type { MinimalServers } from "@/models/minimal_servers";
import { useQuery } from "@tanstack/react-query";
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
import { createFileRoute, useNavigate } from "@tanstack/react-router";
export const Route = createFileRoute("/server_list")({
component: RouteComponent,

View File

@@ -39,6 +39,8 @@ async fn main() -> std::io::Result<()> {
.parse::<u16>()
.unwrap();
let host = env::var("HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
db::migrate().await.expect("Error migrating!");
let rt_handle = tokio::runtime::Handle::current();
@@ -61,7 +63,7 @@ async fn main() -> std::io::Result<()> {
)
.default_service(web::route().to(spa_fallback))
})
.bind(("127.0.0.1", port))?
.bind((host, port))?
.run()
.await;