chore: restrukturierung der microservices in dev/lobby und dev/sector-dev (monorepo)
This commit is contained in:
@@ -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'}`);
|
||||
});
|
||||
Reference in New Issue
Block a user