File size: 1,682 Bytes
1e4fc28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# main.py
import os
import logging
import warnings

# Suppress protobuf version warnings (they're harmless but noisy)
warnings.filterwarnings("ignore", category=UserWarning, module="google.protobuf")
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"

# Make PROJECT_ROOT explicit so module-level code in the container works reliably
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

# Ensure logs dir exists
LOG_DIR = os.path.join(PROJECT_ROOT, "logs")
os.makedirs(LOG_DIR, exist_ok=True)

# Configure file logging (keeps container stdout clean and persists errors)
logfile = os.path.join(LOG_DIR, "app.log")
handler = logging.FileHandler(logfile)
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(module)s: %(message)s")
handler.setFormatter(formatter)

root_logger = logging.getLogger()
# Add handler only if not already added (avoids duplicates in dev reload)
if not any(isinstance(h, logging.FileHandler) and getattr(h, "baseFilename", "") == logfile for h in root_logger.handlers):
    root_logger.addHandler(handler)

# Import factory after logging and directory setup so imports don't crash during bootstrap
from app import create_app

# Create app (allow env-driven config if needed)
app = create_app()

if __name__ == "__main__":
    # allow overriding host/port via env (useful in Docker)
    host = os.environ.get("HOST", "0.0.0.0")
    port = int(os.environ.get("PORT", os.environ.get("FLASK_RUN_PORT", 5000)))
    debug = os.environ.get("FLASK_DEBUG", "0") in ("1", "true", "True")
    app.logger.info("Starting app on %s:%s (debug=%s)", host, port, debug)
    app.run(host=host, port=port, debug=debug)