Skip to content
Snippets Groups Projects
Commit e85a2ce1 authored by Benjamin Ledel's avatar Benjamin Ledel
Browse files

Update 2 files

- /docker-compose.yml
- /.env.sample
parent 5d8ca079
No related branches found
No related tags found
No related merge requests found
# ===================================================================
# ALLGEMEINE & GLOBALE EINSTELLUNGEN
# ===================================================================
# Version der Polaris-Images, die verwendet werden sollen
# Version der Polaris-Images, die in der docker-compose.yml verwendet wird
POLARIS_VERSION=v1.0.1-rc12
# Debug-Modus für Django. Im Produktivbetrieb auf 'False' setzen.
# Debug-Modus für die Anwendungen (im Produktivbetrieb auf 'False' setzen)
DEBUG=False
DJANGO_DEVELOPMENT=false
......@@ -15,99 +14,49 @@ URL=localhost
# ===================================================================
# PASSWÖRTER & SECRETS
# ===================================================================
# HINWEIS: Es wird empfohlen, für jeden Dienst ein eigenes, starkes
# Passwort zu verwenden, anstatt dasselbe für alle.
# Passwort für die MariaDB-Datenbank (Rights Engine)
# HINWEIS: Bitte für jeden Dienst ein eigenes, starkes Passwort setzen.
DATABASE_PASSWORD=CHANGE_ME_MARIADB
# Passwort für die MongoDB-Datenbank (LRS)
MONGO_PASSWORT=CHANGE_ME_MONGO
# Passwort für die PostgreSQL-Datenbank (Analytics Engine)
POSTGRES_PASSWORD=CHANGE_ME_POSTGRES
# Passwort für den zentralen Redis-Service (wird von Celery genutzt)
REDIS_PASSWORD=CHANGE_ME_REDIS
# Geheimer Schlüssel für den Zugriff auf die Statistik-API
STATISTICS_ACCESS_KEY=CHANGE_ME_STATS_KEY
# ===================================================================
# RIGHTS ENGINE (CORE) KONFIGURATION
# ANWENDUNGSKONFIGURATION
# ===================================================================
# --- MariaDB Datenbank (Rights Engine) ---
# --- Rights Engine & LRS ---
DATABASE_NAME=polaris
DATABASE_USER=root
# Der Hostname muss mit dem Service-Namen in docker-compose.yml übereinstimmen
DATABASE_HOST=database
# --- Learning Record Store (LRS / MongoDB) ---
MONGO_USER=root
LRS_MONGO_DB_NAME=lrs
# Verbindungs-String für den LRS. Nutzt die oben definierten Variablen.
LRS_CONNECTION_STRING=mongodb://${MONGO_USER}:${MONGO_PASSWORT}@mongodb_container:27017
# --- Data Disclosure ---
# Gültigkeitsdauer der erstellten ZIP-Dateien in Tagen
DATA_DISCLOSURE_EXPIRATION=30
# Speicherort für die ZIP-Dateien innerhalb des Containers
DATA_DISCLOSURE_LOCATION=/usr/src/app/backend/data_disclosure_zips
# ===================================================================
# ANALYTICS ENGINE KONFIGURATION
# ===================================================================
# --- PostgreSQL Datenbank (Analytics Engine) ---
# --- Analytics Engine ---
POSTGRES_DATABASE=analytics-engine
POSTGRES_USER=postgres
# Verbindungs-String für die Analytics-DB. Nutzt die oben definierten Variablen.
# Der Hostname 'database_analytics' muss mit dem Service-Namen in docker-compose.yml übereinstimmen.
DYNACONF_SQLALCHEMY_DATABASE_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database_analytics/${POSTGRES_DATABASE}
# --- Service URLs für die interne Kommunikation ---
# URL zum Backend der Analytics Engine (Scheduler)
DYNACONF_ANALYTICS_BACKEND_URL=http://scheduler:8000
# URL zum Backend der Rights Engine
DYNACONF_RIGHTS_ENGINE_BACKEND_URL=http://rights-engine:80
# --- Data Disclosure ---
DATA_DISCLOSURE_EXPIRATION=30
DATA_DISCLOSURE_LOCATION=/usr/src/app/backend/data_disclosure_zips
# ===================================================================
# CELERY (TASK QUEUE) KONFIGURATION
# ===================================================================
# Beide Engines (Rights & Analytics) nutzen dieselbe Redis-Instanz,
# aber unterschiedliche Datenbank-Indizes zur Trennung.
# --- Rights Engine Celery ---
# Broker-URL für die Rights Engine (nutzt Redis-DB 0)
CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
# --- Analytics Engine Celery ---
# Broker-URL für die Analytics Engine (nutzt ebenfalls Redis-DB 0)
DYNACONF_CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
# Backend für die Speicherung der Task-Ergebnisse (nutzt Redis-DB 1 zur Trennung)
DYNACONF_CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1
# --- Anonymisierung ---
ANONYMIZATION_HASH_PREFIX=anon
ANONYMIZATION_DEFAULT_MINIMUM_COUNT=10
# ===================================================================
# AUTHENTIFIZIERUNG & SICHERHEIT
# ===================================================================
# --- JWT Token ---
# Pfade zu den Schlüsseln innerhalb des Containers
# --- JWT Token (Pfade innerhalb der Container) ---
JWT_PUBLIC_KEY_PATH=backend/id_rsa.pub
JWT_PRIVATE_KEY_PATH=backend/id_rsa
# --- Identity Provider (z.B. Shibboleth) ---
IDP_ENABLED=false
IDP_SERVER=https://your-idp-server.here
# Vollqualifizierter Domainname (FQDN) deines Service Providers
SP_HOST=ihre-domain.de
# ===================================================================
# OPTIONALE KONFIGURATIONEN
# ===================================================================
......@@ -117,7 +66,3 @@ EMAIL_HOST=
EMAIL_PORT=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
\ No newline at end of file
# --- Anonymisierung ---
ANONYMIZATION_HASH_PREFIX=anon
ANONYMIZATION_DEFAULT_MINIMUM_COUNT=10
\ No newline at end of file
version: "3.8"
# Definieren des benutzerdefinierten Netzwerks für alle Dienste
networks:
polaris-net:
......@@ -12,7 +14,6 @@ volumes:
services:
# --- Gemeinsame Basisdienste ---
# MongoDB als Learning Record Store (LRS)
mongodb_container:
image: mongo:6
restart: always
......@@ -25,8 +26,13 @@ services:
- "27017:27017"
volumes:
- mongodb_data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--username", "${MONGO_USER}", "--password", "${MONGO_PASSWORT}", "--authenticationDatabase", "admin", "--eval", "db.adminCommand('ping')"]
interval: 15s
timeout: 10s
retries: 5
start_period: 30s
# MariaDB für die Rights Engine
database:
image: mariadb:10.6
restart: always
......@@ -44,7 +50,6 @@ services:
retries: 5
start_period: 15s
# Postgres für die Analytics Engine
database_analytics:
image: postgres:15.1-alpine
restart: always
......@@ -56,14 +61,25 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- database_analytics:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DATABASE}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
# Ein zentraler Redis-Service für alle Celery-Broker/Backends
redis:
image: redis:7-alpine
restart: always
networks:
- polaris-net
command: redis-server --requirepass ${REDIS_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "redis-cli -a ${REDIS_PASSWORD} ping | grep PONG"]
interval: 5s
timeout: 3s
retries: 5
start_period: 5s
# --- Rights Engine Komponenten ---
......@@ -75,16 +91,14 @@ services:
ports:
- "8004:80"
environment:
# HIER werden die Variablen jetzt von Docker Compose korrekt ersetzt
- WORKERS=4
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- LRS_CONNECTION_STRING=mongodb://${MONGO_USER}:${MONGO_PASSWORT}@mongodb_container:27017
depends_on:
database:
condition: service_healthy
redis:
condition: service_started
mongodb_container:
condition: service_started
database: { condition: service_healthy }
redis: { condition: service_healthy }
mongodb_container: { condition: service_healthy }
volumes:
- ".env:/usr/src/app/backend/.env"
- "./id_rsa.pub:/usr/src/app/backend/id_rsa.pub"
......@@ -99,12 +113,12 @@ services:
entrypoint: celery
command: -A backend beat -l info
environment:
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- LRS_CONNECTION_STRING=mongodb://${MONGO_USER}:${MONGO_PASSWORT}@mongodb_container:27017
depends_on:
- database
- redis
- mongodb_container
database: { condition: service_healthy }
redis: { condition: service_healthy }
mongodb_container: { condition: service_healthy }
volumes:
- ".env:/usr/src/app/backend/.env"
- "./id_rsa.pub:/usr/src/app/backend/id_rsa.pub"
......@@ -118,13 +132,13 @@ services:
entrypoint: celery
command: -A backend worker --loglevel=debug
environment:
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- LRS_CONNECTION_STRING=mongodb://${MONGO_USER}:${MONGO_PASSWORT}@mongodb_container:27017
depends_on:
- database
- redis
- beat
- mongodb_container
database: { condition: service_healthy }
redis: { condition: service_healthy }
beat: { condition: service_started }
mongodb_container: { condition: service_healthy }
volumes:
- ".env:/usr/src/app/backend/.env"
- "./id_rsa.pub:/usr/src/app/backend/id_rsa.pub"
......@@ -141,11 +155,15 @@ services:
ports:
- "8000:8000"
environment:
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
# HIER werden die Variablen jetzt von Docker Compose korrekt ersetzt
- DYNACONF_SQLALCHEMY_DATABASE_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database_analytics/${POSTGRES_DATABASE}
- DYNACONF_CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- DYNACONF_CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1
- DYNACONF_ANALYTICS_BACKEND_URL=http://scheduler:8000
- DYNACONF_RIGHTS_ENGINE_BACKEND_URL=http://rights-engine:80
depends_on:
- database_analytics
- redis
database_analytics: { condition: service_healthy }
redis: { condition: service_healthy }
volumes:
- ".env:/app/.env"
- "./configuration:/app/configuration"
......@@ -158,11 +176,12 @@ services:
entrypoint: celery
command: -A scheduler.worker beat -l info --scheduler celery_sqlalchemy_scheduler.schedulers:DatabaseScheduler
environment:
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- DYNACONF_SQLALCHEMY_DATABASE_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database_analytics/${POSTGRES_DATABASE}
- DYNACONF_CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- DYNACONF_CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1
depends_on:
- database_analytics
- redis
database_analytics: { condition: service_healthy }
redis: { condition: service_healthy }
volumes:
- ".env:/app/.env"
- "./configuration:/app/configuration"
......@@ -175,12 +194,13 @@ services:
entrypoint: celery
command: -A scheduler.worker worker -l info
environment:
# Verweist jetzt auf den zentralen Redis-Service
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- DYNACONF_SQLALCHEMY_DATABASE_URI=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database_analytics/${POSTGRES_DATABASE}
- DYNACONF_CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
- DYNACONF_CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1
depends_on:
- database_analytics
- redis
- beat_analytics
database_analytics: { condition: service_healthy }
redis: { condition: service_healthy }
beat_analytics: { condition: service_started }
volumes:
- ".env:/app/.env"
- "./configuration:/app/configuration"
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment