Dateien
Hetzner-Backup/v2/docker-compose.yaml
2025-06-18 22:48:22 +02:00

182 Zeilen
3.9 KiB
YAML

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: