docker/dovecot/start_email_api.sh

75 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# start_email_api.sh
# Dieses Script startet die S3 Email Downloader REST API in einer virtuellen Python-Umgebung
# Verzeichnis, in dem sich das Script befindet
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# Name der virtuellen Umgebung
VENV_NAME="venv"
# Python-Executable (falls spezifische Version benötigt wird)
PYTHON_EXEC="python3"
# API Port
PORT=${EMAIL_API_PORT:-5000}
# Umgebungsvariablen Datei
ENV_FILE=".env"
# Prüfen, ob virtuelle Umgebung existiert
if [ ! -d "$VENV_NAME" ]; then
echo "Virtuelle Umgebung wird erstellt..."
$PYTHON_EXEC -m venv "$VENV_NAME"
if [ $? -ne 0 ]; then
echo "Fehler beim Erstellen der virtuellen Umgebung!"
exit 1
fi
fi
# Virtuelle Umgebung aktivieren
source "$VENV_NAME/bin/activate"
# Abhängigkeiten installieren, falls erforderlich
echo "Abhängigkeiten werden installiert..."
pip install --upgrade pip
pip install boto3 flask python-dotenv gunicorn
# Prüfen, ob .env-Datei existiert
if [ ! -f "$ENV_FILE" ]; then
echo "WARNUNG: $ENV_FILE nicht gefunden!"
echo "Bitte erstellen Sie eine .env-Datei mit den erforderlichen Konfigurationen."
echo "Beispiel:"
echo "API_TOKEN=ihr_geheimer_token"
echo "MAIL_DIR=./mail"
echo "AWS_REGION=us-east-2"
echo "AWS_ACCESS_KEY_ID=your_access_key"
echo "AWS_SECRET_ACCESS_KEY=your_secret_key"
echo "DOMAIN_1=example.com"
echo "DOMAIN_1_BUCKET=example-bucket"
echo "DOMAIN_1_USERNAMES=user1,user2,user3"
exit 1
fi
# Überprüfen, ob API_TOKEN in der .env-Datei gesetzt ist
if ! grep -q "API_TOKEN" "$ENV_FILE"; then
echo "WARNUNG: API_TOKEN nicht in $ENV_FILE gefunden!"
echo "Die API wird ohne Token-Schutz gestartet. Dies ist unsicher für Produktionsumgebungen."
read -p "Möchten Sie fortfahren? (j/n): " choice
if [[ ! "$choice" =~ ^[jJyY]$ ]]; then
echo "Abbruch."
exit 1
fi
fi
# Prüfen, ob das Python-Script existiert
API_SCRIPT="s3_email_processor_api.py"
if [ ! -f "$API_SCRIPT" ]; then
echo "Fehler: $API_SCRIPT nicht gefunden!"
exit 1
fi
# API im Produktionsmodus mit Gunicorn starten
echo "Starte S3 Email Downloader API auf Port $PORT..."
exec gunicorn --bind "0.0.0.0:$PORT" --workers 2 "s3_email_processor_api:app"