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