diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7c35b80 --- /dev/null +++ b/Dockerfile @@ -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"] diff --git a/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx index 55acd11..e1ecc12 100644 --- a/frontend/src/routes/index.tsx +++ b/frontend/src/routes/index.tsx @@ -1,5 +1,4 @@ import { createFileRoute } from "@tanstack/react-router"; -import logo from "../logo.svg"; export const Route = createFileRoute("/")({ component: App, diff --git a/frontend/src/routes/server_list.tsx b/frontend/src/routes/server_list.tsx index 8219016..731699d 100644 --- a/frontend/src/routes/server_list.tsx +++ b/frontend/src/routes/server_list.tsx @@ -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, diff --git a/src/main.rs b/src/main.rs index d013465..bd4127f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,8 @@ async fn main() -> std::io::Result<()> { .parse::() .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;