SCGR commited on
Commit
85c633d
·
1 Parent(s): cefe155

entrypoint & dockerfile

Browse files
Files changed (3) hide show
  1. Dockerfile +14 -10
  2. entrypoint.sh +9 -0
  3. py_backend/entrypoint.sh +0 -9
Dockerfile CHANGED
@@ -1,31 +1,35 @@
1
  FROM python:3.11-slim
2
 
3
- # Build deps for psycopg2 etc. (safe to keep)
4
  RUN apt-get update && apt-get install -y \
5
  build-essential gcc libpq-dev \
6
  && rm -rf /var/lib/apt/lists/*
7
 
8
  WORKDIR /app
9
 
10
- # Install deps first for caching
11
  COPY py_backend/requirements.txt /tmp/requirements.txt
12
  RUN pip install --no-cache-dir -r /tmp/requirements.txt
13
 
14
- # Copy backend
15
  COPY py_backend/ /app/
16
 
17
- # ---- Demo-friendly defaults (no Compose) ----
18
- # Persist stuff under /data (enable "Persistent storage" in Space settings)
19
- RUN mkdir -p /data/uploads && chmod -R 777 /data
 
 
20
  ENV DATABASE_URL=sqlite:////data/app.db
21
  ENV STORAGE_PROVIDER=local
22
  ENV STORAGE_DIR=/data/uploads
23
  ENV HF_HOME=/data/.cache/huggingface
24
- # ---------------------------------------------
25
 
26
- # Hugging Face Spaces will set PORT, default to 7860
 
 
 
27
  ENV PORT=7860
28
  EXPOSE 7860
29
 
30
- # Use shell form to allow environment variable substitution
31
- CMD uvicorn app.main:app --host 0.0.0.0 --port $PORT
 
1
  FROM python:3.11-slim
2
 
3
+ # Build deps for psycopg2 etc.
4
  RUN apt-get update && apt-get install -y \
5
  build-essential gcc libpq-dev \
6
  && rm -rf /var/lib/apt/lists/*
7
 
8
  WORKDIR /app
9
 
10
+ # Install Python deps first for better caching
11
  COPY py_backend/requirements.txt /tmp/requirements.txt
12
  RUN pip install --no-cache-dir -r /tmp/requirements.txt
13
 
14
+ # Copy backend code
15
  COPY py_backend/ /app/
16
 
17
+ # Copy startup script
18
+ COPY entrypoint.sh /app/entrypoint.sh
19
+ RUN chmod +x /app/entrypoint.sh
20
+
21
+ # Default runtime env (can be overridden by Space Secrets)
22
  ENV DATABASE_URL=sqlite:////data/app.db
23
  ENV STORAGE_PROVIDER=local
24
  ENV STORAGE_DIR=/data/uploads
25
  ENV HF_HOME=/data/.cache/huggingface
 
26
 
27
+ # Create writable data dirs (enable “Persistent storage” in Space settings to keep them)
28
+ RUN mkdir -p /data/uploads && chmod -R 777 /data
29
+
30
+ # Hugging Face sets PORT; default to 7860
31
  ENV PORT=7860
32
  EXPOSE 7860
33
 
34
+ # Run via shell script so $PORT is expanded before reaching uvicorn
35
+ ENTRYPOINT ["/app/entrypoint.sh"]
entrypoint.sh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env sh
2
+ set -eu
3
+
4
+ # expand PORT in the shell (default 7860), then pass a pure number to uvicorn
5
+ PORT="${PORT:-7860}"
6
+
7
+ cd /app
8
+ echo "Starting Uvicorn on 0.0.0.0:${PORT}"
9
+ exec uvicorn app.main:app --host 0.0.0.0 --port "$PORT"
py_backend/entrypoint.sh DELETED
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- echo "Running alembic upgrade head..."
5
- alembic upgrade head
6
-
7
- PORT_TO_USE="${PORT:-7860}"
8
- echo "Starting server on port ${PORT_TO_USE}"
9
- exec uvicorn app.main:app --host 0.0.0.0 --port "${PORT_TO_USE}"