services: # Backend Service (Node.js App) backend: build: context: ./backend # Pfad zum Verzeichnis mit dem Backend-Dockerfile args: # Übergibt den Git Commit Hash als Build-Argument. # Erwartet, dass GIT_COMMIT_SHA in der Shell-Umgebung gesetzt ist (z.B. export GIT_COMMIT_SHA=$(git rev-parse --short HEAD)) - GIT_COMMIT_SHA=${GIT_COMMIT_SHA:-unknown} # Übergibt den Sentry DSN als Build-Argument (optional, falls im Code benötigt) - SENTRY_DSN="https://7ea70caba68f548fb96482a573006a7b@o447623.ingest.us.sentry.io/4509062020333568" container_name: utools_backend # Eindeutiger Name für den Container restart: unless-stopped environment: # Setze Umgebungsvariablen für das Backend NODE_ENV: production # Wichtig für Performance und Logging PORT: 3000 # Port innerhalb des Containers LOG_LEVEL: info # Oder 'warn' für weniger Logs in Produktion PING_COUNT: 4 # Die DB-Pfade werden aus dem Backend-Dockerfile ENV genommen, # könnten hier aber überschrieben werden, falls nötig. # GEOIP_CITY_DB: ./data/GeoLite2-City.mmdb # GEOIP_ASN_DB: ./data/GeoLite2-ASN.mmdb # Sentry DSN aus der Umgebung/ .env Datei übernehmen SENTRY_DSN: "https://7ea70caba68f548fb96482a573006a7b@o447623.ingest.us.sentry.io/4509062020333568" # Wichtig für die Laufzeit dns: - 1.1.1.1 # Cloudflare DNS - 1.0.0.1 # Cloudflare DNS - 8.8.8.8 # Google DNS - 8.8.4.4 # Google DNS networks: - utools_network # Verbinde mit unserem benutzerdefinierten Netzwerk # Frontend Service (Nginx) frontend: build: ./frontend # Pfad zum Verzeichnis mit dem Frontend-Dockerfile container_name: utools_frontend restart: unless-stopped ports: # Mappe Port 8080 vom Host auf Port 80 im Container (wo Nginx lauscht) # Zugriff von außen (Browser) erfolgt über localhost:8080 - "8080:80" depends_on: - backend # Stellt sicher, dass Backend gestartet wird (aber nicht unbedingt bereit ist) networks: - utools_network # Verbinde mit unserem benutzerdefinierten Netzwerk # Definiere ein benutzerdefiniertes Netzwerk (gute Praxis) networks: utools_network: driver: bridge # Standard-Netzwerktreiber