94 lines
2.7 KiB
YAML
94 lines
2.7 KiB
YAML
# 1 bis 8 Party – Web-Stack auf hocks.eu
|
||
# Muster: Mieterportal-Stack (/opt/mieterportal + /opt/mp-mail)
|
||
# TLS + Subdomain liefert der Nginx Proxy Manager (npm_default-Netz).
|
||
#
|
||
# Dienste:
|
||
# onebis8-web nginx, statisches dist/ (Mobile-App), proxiet
|
||
# POST /api/mail/send → onebis8-mail-api (Token aus app.env)
|
||
# und /api/game/* → onebis8-api (Multiplayer-Spielräume)
|
||
# onebis8-api Game-API: Spielräume, Ready-Start, geheime Rankings,
|
||
# Punkteberechnung (reine Node-Standardbibliothek)
|
||
# onebis8-mail Postfix-Relay (nur intern im Docker-Netz, kein -p)
|
||
# onebis8-mail-api schlanke Mail-HTTP-API mit Outbox/Retry (Muster: mp-mail-api)
|
||
#
|
||
# Konfiguration:
|
||
# app.env MAIL_API_TOKEN (Token für den nginx-Proxy, gitignored)
|
||
# mail/mail.env Relay, Absender, Token (gitignored)
|
||
|
||
services:
|
||
onebis8-web:
|
||
build: ./web
|
||
image: onebis8-web:latest
|
||
container_name: onebis8-web
|
||
restart: unless-stopped
|
||
volumes:
|
||
- ./web/docker/templates/default.conf.template:/etc/nginx/templates/default.conf.template:ro
|
||
# dist/ als Laufzeit-Mount: CI ersetzt die Dateien und nginx pickt sie
|
||
# sofort auf – kein Image-Rebuild noetig (Build im Image bleibt Fallback)
|
||
- ./web/dist:/usr/share/nginx/html:ro
|
||
env_file:
|
||
- app.env
|
||
depends_on:
|
||
- onebis8-mail-api
|
||
- onebis8-api
|
||
networks:
|
||
- npm_default
|
||
|
||
# Game-API fuer Multiplayer-Spielräume (jeder Spieler auf seinem Handy)
|
||
onebis8-api:
|
||
image: node:22-alpine
|
||
container_name: onebis8-api
|
||
restart: unless-stopped
|
||
environment:
|
||
PORT: "8080"
|
||
DATA_DIR: /data
|
||
command: ["node", "/app/server.js"]
|
||
volumes:
|
||
- ./game/api/server.js:/app/server.js:ro
|
||
- onebis8-game-data:/data
|
||
networks:
|
||
- npm_default
|
||
|
||
# Postfix-Relay (nur intern)
|
||
onebis8-mail:
|
||
build: ./mail/postfix
|
||
image: onebis8-postfix:latest
|
||
container_name: onebis8-mail
|
||
restart: unless-stopped
|
||
env_file:
|
||
- mail/mail.env
|
||
expose:
|
||
- "25"
|
||
networks:
|
||
- npm_default
|
||
|
||
# Kleine HTTP-API, über die die Webseite Mails an den Relay übergibt.
|
||
onebis8-mail-api:
|
||
image: python:3.12-alpine
|
||
container_name: onebis8-mail-api
|
||
restart: unless-stopped
|
||
env_file:
|
||
- mail/mail.env
|
||
environment:
|
||
RELAY_HOST: onebis8-mail
|
||
RELAY_PORT: "25"
|
||
PORT: "8080"
|
||
ALLOWED_ORIGIN: https://1bis.hocks.eu
|
||
DATA_DIR: /data
|
||
command: ["python", "/app/server.py"]
|
||
volumes:
|
||
- ./mail/api/server.py:/app/server.py:ro
|
||
- onebis8-mail-data:/data
|
||
depends_on:
|
||
- onebis8-mail
|
||
networks:
|
||
- npm_default
|
||
|
||
networks:
|
||
npm_default:
|
||
external: true
|
||
|
||
volumes:
|
||
onebis8-mail-data:
|
||
onebis8-game-data:
|