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
+89
View File
@@ -0,0 +1,89 @@
# ==============================================================================
# Void-Genesis - Sektor Dev-Umgebung
# ==============================================================================
services:
# ----------------------------------------------------------------------------
# 1. Sektor-Datenbank (PostgreSQL)
# ----------------------------------------------------------------------------
sector-db:
image: postgres:16-alpine
container_name: void_sector_db
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: ${POSTGRES_USER}
PGPASSWORD: ${POSTGRES_PASSWORD_SECTOR}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- "${PORT_DB}:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- void_sector_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
# ----------------------------------------------------------------------------
# 2. Sektor-Backend (Node.js)
# ----------------------------------------------------------------------------
sector-backend:
build:
context: ./sector-backend
dockerfile: Dockerfile.dev
container_name: void_sector_backend
restart: unless-stopped
depends_on:
sector-db:
condition: service_healthy
volumes:
- ./sector-backend:/app
- /app/node_modules
ports:
- "${PORT_BACKEND}:3000"
environment:
- DB_HOST=sector-db
- DB_PORT=5432
- DB_USER=${POSTGRES_USER}
- DB_PASS=${POSTGRES_PASSWORD}
- DB_NAME=${POSTGRES_DB}
- NODE_ENV=development
- JWT_ACCESS_SECRET=${JWT_ACCESS_SECRET}
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
networks:
- void_sector_network
- npm_network
# ----------------------------------------------------------------------------
# 3. Sektor-Frontend (Vite + PixiJS)
# ----------------------------------------------------------------------------
sector-frontend:
build:
context: ./sector-frontend
dockerfile: Dockerfile.dev
container_name: void_sector_frontend
restart: unless-stopped
volumes:
- ./sector-frontend:/app
- /app/node_modules
ports:
- "${PORT_FRONTEND}:5173"
environment:
- NODE_ENV=development
- CHOKIDAR_USEPOLLING=true
networks:
- void_sector_network
- npm_network
# ------------------------------------------------------------------------------
# Netzwerke
# ------------------------------------------------------------------------------
networks:
void_sector_network:
driver: bridge
npm_network:
external: true
name: nginx-proxy-manager_default
@@ -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'}`);
});
@@ -0,0 +1,16 @@
# Basis-Image für das Frontend
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# Exponiere den standardmäßigen Vite-Port
EXPOSE 5173
# Startet den Vite-Dev-Server mit HMR (Hot Module Replacement)
CMD ["npm", "run", "dev"]
@@ -0,0 +1,16 @@
{
"name": "void-genesis-sector-frontend",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "vite build"
},
"dependencies": {
"pixi.js": "^8.1.0"
},
"devDependencies": {
"vite": "^5.2.11"
}
}