services: postgres: build: context: ../v2_postgres container_name: db restart: always env_file: .env environment: POSTGRES_HOST: postgres POSTGRES_INITDB_ARGS: '--encoding=UTF8 --locale=de_DE.UTF-8' POSTGRES_COLLATE: 'de_DE.UTF-8' POSTGRES_CTYPE: 'de_DE.UTF-8' TZ: Europe/Berlin PGTZ: Europe/Berlin volumes: # Persistente Speicherung der Datenbank auf dem Windows-Host - postgres_data:/var/lib/postgresql/data # Init-Skript für Tabellen - ../v2_adminpanel/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - internal_net deploy: resources: limits: cpus: '2' memory: 4g redis: image: redis:7-alpine container_name: redis-cache restart: always environment: TZ: Europe/Berlin networks: - internal_net volumes: - redis_data:/data deploy: resources: limits: cpus: '0.5' memory: 512m rabbitmq: image: rabbitmq:3-management container_name: rabbitmq restart: always environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-admin} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS:-admin} TZ: Europe/Berlin networks: - internal_net volumes: - rabbitmq_data:/var/lib/rabbitmq deploy: resources: limits: cpus: '1' memory: 1g license-server: build: context: ../v2_lizenzserver container_name: license-server restart: always # Port-Mapping entfernt - nur noch über Nginx erreichbar env_file: .env environment: TZ: Europe/Berlin REDIS_URL: redis://redis:6379/0 depends_on: - postgres - redis - rabbitmq networks: - internal_net deploy: resources: limits: cpus: '2' memory: 4g analytics-service: build: context: ../v2_lizenzserver/services/analytics container_name: analytics-service restart: always # Port 5003 - nur intern erreichbar env_file: .env environment: TZ: Europe/Berlin DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/v2_adminpanel REDIS_URL: redis://redis:6379/2 JWT_SECRET: ${JWT_SECRET} FLASK_ENV: production depends_on: - postgres - redis - rabbitmq networks: - internal_net deploy: resources: limits: cpus: '1' memory: 2g admin-api-service: build: context: ../v2_lizenzserver/services/admin container_name: admin-api-service restart: always # Port 5004 - nur intern erreichbar env_file: .env environment: TZ: Europe/Berlin DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/v2_adminpanel REDIS_URL: redis://redis:6379/3 JWT_SECRET: ${JWT_SECRET} FLASK_ENV: production depends_on: - postgres - redis - rabbitmq networks: - internal_net deploy: resources: limits: cpus: '1' memory: 2g admin-panel: build: context: ../v2_adminpanel container_name: admin-panel restart: always # Port-Mapping entfernt - nur über nginx erreichbar env_file: .env environment: TZ: Europe/Berlin depends_on: - postgres networks: - internal_net volumes: # Backup-Verzeichnis - ../backups:/app/backups deploy: resources: limits: cpus: '2' memory: 4g nginx: build: context: ../v2_nginx container_name: nginx-proxy restart: always ports: - "80:80" - "443:443" environment: TZ: Europe/Berlin depends_on: - admin-panel - license-server - analytics-service - admin-api-service networks: - internal_net networks: internal_net: driver: bridge volumes: postgres_data: redis_data: rabbitmq_data: