From d02928e307d1b601b07c18984ec198a7f2b2b03c Mon Sep 17 00:00:00 2001 From: szbk Date: Tue, 21 Oct 2025 21:43:46 +0300 Subject: [PATCH] Dockerfile update --- Dockerfile | 21 +++++++++++++++++++++ docker-compose.yml | 29 ++++------------------------- server/server.js | 13 +++++++++++++ 3 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1a5b2a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Build client +FROM node:22-alpine AS client +WORKDIR /app/client +COPY client/package*.json ./ +RUN npm ci || npm i +COPY client . +RUN npm run build + +# Build server +FROM node:22-slim +RUN apt-get update && apt-get install -y ffmpeg +WORKDIR /app/server +COPY server/package*.json ./ +RUN npm ci || npm i +COPY server . + +# Move files to public folder +COPY --from=client /app/client/dist ./public + +EXPOSE 3001 +CMD ["npm", "start"] diff --git a/docker-compose.yml b/docker-compose.yml index bd15db5..62cf5d6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,32 +1,11 @@ version: "3.9" -networks: - dupe_network: - driver: bridge - services: - server: - build: ./server - container_name: dupe-server + dupe: + build: . + container_name: dupe ports: - "3001:3001" - networks: - - dupe_network volumes: - - ./downloads:/app/downloads - restart: unless-stopped - - client: - build: ./client - container_name: dupe-client - depends_on: - - server - ports: - - "5173:5173" - networks: - - dupe_network - volumes: - - ./downloads:/app/downloads - environment: - - VITE_API=http://localhost:3001 + - ./downloads:/app/server/downloads restart: unless-stopped diff --git a/server/server.js b/server/server.js index 2d5d94f..244ecb5 100644 --- a/server/server.js +++ b/server/server.js @@ -300,6 +300,19 @@ console.log("📂 Download path:", DOWNLOAD_DIR); const server = app.listen(PORT, () => console.log(`✅ WebTorrent server ${PORT} portunda çalışıyor`) ); + +// --- ✅ Client build (frontend) dosyalarını sun --- +const publicDir = path.join(__dirname, "public"); +if (fs.existsSync(publicDir)) { + app.use(express.static(publicDir)); + + // Frontend route'larını index.html'e yönlendir + app.get("*", (req, res, next) => { + if (req.path.startsWith("/api")) return next(); + res.sendFile(path.join(publicDir, "index.html")); + }); +} + const wss = new WebSocketServer({ server }); wss.on("connection", (ws) => { ws.send(JSON.stringify({ type: "progress", torrents: snapshot() }));