LogicGoInfotechSpaces commited on
Commit
8fa7f23
·
1 Parent(s): 2999873

fix(runtime): use /data for uploads/results and write Firebase creds to /data; set DATA_DIR and OMP_NUM_THREADS

Browse files
Files changed (2) hide show
  1. Dockerfile +5 -2
  2. app/main.py +4 -10
Dockerfile CHANGED
@@ -24,13 +24,14 @@ RUN pip install --no-cache-dir -r requirements.txt
24
  COPY . .
25
 
26
  # Create directories for uploads and results
27
- RUN mkdir -p uploads results
 
28
 
29
  # Handle Firebase credentials from environment variable (for Hugging Face Spaces secrets)
30
  # This allows the credentials to be passed as a secret and written to file at runtime
31
  RUN echo '#!/bin/bash' > /entrypoint.sh && \
32
  echo 'if [ -n "$FIREBASE_CREDENTIALS" ]; then' >> /entrypoint.sh && \
33
- echo ' echo "$FIREBASE_CREDENTIALS" > colorize-662df-firebase-adminsdk-fbsvc-e080668793.json' >> /entrypoint.sh && \
34
  echo 'fi' >> /entrypoint.sh && \
35
  echo 'exec "$@"' >> /entrypoint.sh && \
36
  chmod +x /entrypoint.sh
@@ -42,6 +43,8 @@ EXPOSE 7860
42
  ENV PYTHONUNBUFFERED=1
43
  ENV BASE_URL=${SPACE_HOST}
44
  ENV PORT=7860
 
 
45
 
46
  # Health check
47
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
 
24
  COPY . .
25
 
26
  # Create directories for uploads and results
27
+ # Ensure writable data directory exists for Spaces
28
+ RUN mkdir -p /data/uploads /data/results
29
 
30
  # Handle Firebase credentials from environment variable (for Hugging Face Spaces secrets)
31
  # This allows the credentials to be passed as a secret and written to file at runtime
32
  RUN echo '#!/bin/bash' > /entrypoint.sh && \
33
  echo 'if [ -n "$FIREBASE_CREDENTIALS" ]; then' >> /entrypoint.sh && \
34
+ echo ' echo "$FIREBASE_CREDENTIALS" > /data/firebase-adminsdk.json' >> /entrypoint.sh && \
35
  echo 'fi' >> /entrypoint.sh && \
36
  echo 'exec "$@"' >> /entrypoint.sh && \
37
  chmod +x /entrypoint.sh
 
43
  ENV PYTHONUNBUFFERED=1
44
  ENV BASE_URL=${SPACE_HOST}
45
  ENV PORT=7860
46
+ ENV DATA_DIR=/data
47
+ ENV OMP_NUM_THREADS=1
48
 
49
  # Health check
50
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
app/main.py CHANGED
@@ -61,16 +61,10 @@ else:
61
  except:
62
  pass
63
 
64
- # Create writable directories (prefer under user home unless overridden)
65
- def _resolve_dir(path_str: str, default_subdir: str) -> Path:
66
- p = Path(path_str).expanduser()
67
- if not p.is_absolute():
68
- # Place relative paths under ~/data to avoid permission issues
69
- p = Path.home() / "data" / default_subdir
70
- return p
71
-
72
- UPLOAD_DIR = _resolve_dir(os.getenv("UPLOAD_DIR", settings.UPLOAD_DIR), "uploads")
73
- RESULT_DIR = _resolve_dir(os.getenv("RESULT_DIR", settings.RESULT_DIR), "results")
74
  UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
75
  RESULT_DIR.mkdir(parents=True, exist_ok=True)
76
  logger.info("Storage directories -> uploads: %s, results: %s", str(UPLOAD_DIR), str(RESULT_DIR))
 
61
  except:
62
  pass
63
 
64
+ # Always use /data in Spaces (writable). Allow override via env.
65
+ DATA_ROOT = Path(os.getenv("DATA_DIR", "/data"))
66
+ UPLOAD_DIR = Path(os.getenv("UPLOAD_DIR", str(DATA_ROOT / "uploads")))
67
+ RESULT_DIR = Path(os.getenv("RESULT_DIR", str(DATA_ROOT / "results")))
 
 
 
 
 
 
68
  UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
69
  RESULT_DIR.mkdir(parents=True, exist_ok=True)
70
  logger.info("Storage directories -> uploads: %s, results: %s", str(UPLOAD_DIR), str(RESULT_DIR))