From 061f25fdcb70ffc73f72d2fb8e75d628e19c0041 Mon Sep 17 00:00:00 2001 From: Peter Stockings Date: Thu, 1 Jan 2026 16:29:57 +1100 Subject: [PATCH] Switch to using Docker file deployment --- .dockerignore | 8 ++++++++ Dockerfile | 28 ++++++++++++++++++++++++++++ MagnetLink.txt | 1 + packages/server/src/index.ts | 22 +++++----------------- 4 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 MagnetLink.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9692fc8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +node_modules +dist +.git +.gitignore +.env +downloads +packages/client/dist +packages/server/dist diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2d3944e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# Use the official Bun image +FROM oven/bun:1.1.3 + +# Set working directory +WORKDIR /app + +# Copy package files first for caching +COPY package.json bun.lockb ./ +COPY packages/client/package.json ./packages/client/ +COPY packages/server/package.json ./packages/server/ +COPY packages/shared/package.json ./packages/shared/ + +# Install dependencies +RUN bun install --frozen-lockfile + +# Copy the rest of the application +COPY . . + +# Build the client (Vite) and server (TSC) +# ensuring the environment variables are set for the build if needed +ENV NODE_ENV=production +RUN bun --filter "*" build + +# Expose the port (Dokku will override PORT env var, but 3000 is a good default documentation) +EXPOSE 3000 + +# Start the server +CMD ["bun", "packages/server/src/index.ts"] diff --git a/MagnetLink.txt b/MagnetLink.txt new file mode 100644 index 0000000..da21cfb --- /dev/null +++ b/MagnetLink.txt @@ -0,0 +1 @@ +magnet:?xt=urn:btih:A18230D43BDA105BE7DEF84CB711859018AAA92D&dn=Snow%20Crash%20by%20Neal%20Stephenson%20EPUB&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&tr=udp%3A%2F%2Ftracker.bittor.pw%3A1337%2Fannounce&tr=udp%3A%2F%2Fpublic.popcorn-tracker.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.dler.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969&tr=udp%3A%2F%2Fopen.demonii.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fglotorrents.pw%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337&tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337 \ No newline at end of file diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 115d387..51a012e 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,11 +1,8 @@ -console.log("Imports loading..."); import { parseMagnetURI, BencodeDecoder, BencodeEncoder, MetadataReassembler } from "@torrent-client/shared"; -console.log("Shared loaded"); import dgram from "node:dgram"; import crypto from "node:crypto"; import { join } from "node:path"; import { TorrentManager } from "./engine"; -console.log("Engine loaded"); const port = process.env.PORT || 3001; const getCONFIG = () => ({ @@ -312,18 +309,9 @@ export async function handleRequest(req: Request): Promise { return new Response(Bun.file(join(distPath, "index.html"))); } -console.log("Server process starting..."); - -try { - if (process.env.NODE_ENV !== "test") { - console.log(`Attempting to bind parameters: PORT=${port}`); - const server = Bun.serve({ - port: port, - fetch: handleRequest - }); - console.log(`Server successfully listening on port ${server.port}`); - } -} catch (e) { - console.error("CRITICAL SERVER STARTUP ERROR:", e); - process.exit(1); +if (process.env.NODE_ENV !== "test") { + Bun.serve({ + port: port, + fetch: handleRequest + }); }