chore: restrukturierung der microservices in dev/lobby und dev/sector-dev (monorepo)

This commit is contained in:
2026-06-08 22:08:44 +02:00
parent 87f4d935c4
commit c1eb570b43
90 changed files with 10481 additions and 2 deletions
@@ -0,0 +1,20 @@
# Nutzen der schlanken Node.js Alpine-Variante als Basis
FROM node:20-alpine
# Arbeitsverzeichnis im Container festlegen
WORKDIR /app
# Kopiere zuerst die package.json, um den Docker-Cache für die npm-Installation optimal zu nutzen
COPY package*.json ./
# Installiere alle Abhängigkeiten (inklusive DevDependencies wie Nodemon)
RUN npm install
# Kopiere den restlichen Quellcode (wird im Dev-Betrieb durch das Compose-Volume überschrieben)
COPY . .
# Exponiere den internen Express-Port
EXPOSE 3000
# Starte die Anwendung über das in der package.json definierte Dev-Skript (Nodemon)
CMD ["npm", "run", "dev"]
@@ -0,0 +1,16 @@
{
"name": "void-genesis-sector-backend",
"version": "1.0.0",
"description": "Void-Genesis Game Sector Backend",
"main": "src/server.js",
"scripts": {
"dev": "nodemon src/server.js"
},
"dependencies": {
"express": "^4.19.2",
"pg": "^8.11.5"
},
"devDependencies": {
"nodemon": "^3.1.0"
}
}
@@ -0,0 +1,48 @@
// Externe Abhängigkeiten importieren
const express = require('express');
const { Pool } = require('pg'); // Das 'pg'-Modul ermöglicht die Kommunikation mit PostgreSQL
const app = express();
// Der interne Port im Container bleibt 3000 (wird via Docker Compose auf 3002 gemappt)
const port = 3000;
// ----------------------------------------------------------------------------
// PostgreSQL Verbindungs-Pool konfigurieren
// ----------------------------------------------------------------------------
// Wir ziehen uns die Zugangsdaten direkt aus den Umgebungsvariablen (process.env),
// die Docker Compose aus der .env-Datei in den Container injiziert hat.
const pool = new Pool({
host: process.env.DB_HOST, // Entspricht im Docker-Netzwerk dem Service 'sector-db'
port: process.env.DB_PORT, // Interner Port 5432
user: process.env.DB_USER, // sector_admin
password: process.env.DB_PASS, // Dein neues Sektor-Passwort
database: process.env.DB_NAME, // void_sector
});
// ----------------------------------------------------------------------------
// Datenbank-Verbindungstest beim Serverstart
// ----------------------------------------------------------------------------
// Wir setzen eine Test-Query ab (SELECT NOW()), um zu prüfen, ob die DB bereit ist.
pool.query('SELECT NOW()', (err, res) => {
if (err) {
console.error('❌ Fehler bei der Verbindung zur Sektor-Datenbank:', err.stack);
} else {
console.log(`✅ Erfolgreich mit der Sektor-PostgreSQL-Datenbank (${process.env.DB_NAME}) verbunden!`);
}
});
// ----------------------------------------------------------------------------
// Express Routen & Server-Start
// ----------------------------------------------------------------------------
app.get('/', (req, res) => {
res.send('Void-Genesis Sektor-Backend läuft im Dev-Modus und ist mit der DB verbunden!');
});
app.get('/api/health', (req, res) => {
res.json({ status: 'ok' });
});
app.listen(port, () => {
console.log(`🚀 Sektor-Backend gestartet auf Port ${port}`);
console.log(`Environment: ${process.env.NODE_ENV || 'development'}`);
});