XUUUUSID commited on
Commit
b102958
·
verified ·
1 Parent(s): da07271

Upload 2 files

Browse files
Files changed (2) hide show
  1. Dockerfile +9 -2
  2. app.py +16 -2
Dockerfile CHANGED
@@ -1,13 +1,20 @@
1
  FROM python:3.11-slim
2
 
 
 
 
3
  WORKDIR /app
4
  COPY requirements.txt .
5
  RUN pip install --no-cache-dir -r requirements.txt
6
 
7
  COPY . .
8
 
9
- # Persistent storage bucket mounted at /data
10
- ENV DATA_DIR=/data
 
11
 
 
12
  EXPOSE 7860
 
 
13
  CMD ["python", "app.py"]
 
1
  FROM python:3.11-slim
2
 
3
+ # HF Spaces runs containers as uid 1000 — ensure ownership
4
+ RUN useradd -m -u 1000 appuser
5
+
6
  WORKDIR /app
7
  COPY requirements.txt .
8
  RUN pip install --no-cache-dir -r requirements.txt
9
 
10
  COPY . .
11
 
12
+ # Create /data and give appuser ownership so the persistent mount is writable.
13
+ # On HF Spaces the mount overlays /data at runtime — this ensures the fallback works too.
14
+ RUN mkdir -p /data/audio && chown -R 1000:1000 /data
15
 
16
+ ENV DATA_DIR=/data
17
  EXPOSE 7860
18
+
19
+ USER 1000
20
  CMD ["python", "app.py"]
app.py CHANGED
@@ -14,8 +14,22 @@ from flask import (
14
 
15
  app = Flask(__name__)
16
 
17
- # Persistent storage mounted at /data (HF Spaces Storage Bucket)
18
- DATA_DIR = os.environ.get("DATA_DIR", "/data")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  DB_PATH = os.path.join(DATA_DIR, "recordings.db")
20
  AUDIO_DIR = os.path.join(DATA_DIR, "audio")
21
 
 
14
 
15
  app = Flask(__name__)
16
 
17
+ # Persistent storage mounted at /data (HF Spaces Storage Bucket).
18
+ # Falls back to /tmp if /data is not writable.
19
+ def pick_data_dir():
20
+ for d in [os.environ.get("DATA_DIR", "/data"), "/tmp/audio_studio"]:
21
+ try:
22
+ os.makedirs(os.path.join(d, "audio"), exist_ok=True)
23
+ test = os.path.join(d, ".write_test")
24
+ with open(test, "w") as f:
25
+ f.write("ok")
26
+ os.remove(test)
27
+ return d
28
+ except OSError:
29
+ continue
30
+ return "/tmp/audio_studio"
31
+
32
+ DATA_DIR = pick_data_dir()
33
  DB_PATH = os.path.join(DATA_DIR, "recordings.db")
34
  AUDIO_DIR = os.path.join(DATA_DIR, "audio")
35