mutisya commited on
Commit
a80567b
·
verified ·
1 Parent(s): 67f301c

Deploy Polyglot backend with quantized models

Browse files
Files changed (2) hide show
  1. Dockerfile +10 -22
  2. startup.sh +43 -0
Dockerfile CHANGED
@@ -20,29 +20,17 @@ RUN apt-get update && apt-get install -y \
20
  COPY requirements.txt .
21
  RUN pip install --no-cache-dir -r requirements.txt
22
 
23
- # Copy download script and preload script
24
  COPY download_code.py .
25
  COPY preload_models.py .
 
26
 
27
- # Download application code from private code space
28
- # CODE_SPACE_ID should be set as a Space secret (e.g., "mutisya/polyglot-backend-code")
29
- ARG CODE_SPACE_ID
30
- ARG HUGGING_FACE_HUB_TOKEN
31
- RUN if [ -z "$CODE_SPACE_ID" ]; then \
32
- echo "ERROR: CODE_SPACE_ID not provided. Set it as a Space secret."; \
33
- exit 1; \
34
- fi && \
35
- if [ -z "$HUGGING_FACE_HUB_TOKEN" ]; then \
36
- echo "ERROR: HUGGING_FACE_HUB_TOKEN not provided. Set it as a Space secret."; \
37
- exit 1; \
38
- fi && \
39
- echo "Downloading code from: $CODE_SPACE_ID" && \
40
- python download_code.py "$CODE_SPACE_ID" "$HUGGING_FACE_HUB_TOKEN" && \
41
- if [ ! -d "/app/app" ]; then \
42
- echo "ERROR: Code download failed - /app/app directory not found"; \
43
- exit 1; \
44
- fi && \
45
- echo "OK Code downloaded successfully"
46
 
47
  # Set environment variables for caching
48
  ENV HF_HOME=/app/.cache
@@ -67,5 +55,5 @@ RUN python preload_models.py $HUGGING_FACE_HUB_TOKEN || echo "Model preload skip
67
  # Expose port 7860 (HuggingFace Spaces standard)
68
  EXPOSE 7860
69
 
70
- # Run the application
71
- CMD ["uvicorn", "app.main:socket_app", "--host", "0.0.0.0", "--port", "7860"]
 
20
  COPY requirements.txt .
21
  RUN pip install --no-cache-dir -r requirements.txt
22
 
23
+ # Copy scripts
24
  COPY download_code.py .
25
  COPY preload_models.py .
26
+ COPY startup.sh .
27
 
28
+ # Make startup script executable
29
+ RUN chmod +x startup.sh
30
+
31
+ # Note: Application code will be downloaded at runtime from private code space
32
+ # The startup script will check for CODE_SPACE_ID and HUGGING_FACE_HUB_TOKEN
33
+ # environment variables and download the code before starting the server
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  # Set environment variables for caching
36
  ENV HF_HOME=/app/.cache
 
55
  # Expose port 7860 (HuggingFace Spaces standard)
56
  EXPOSE 7860
57
 
58
+ # Run the startup script (which downloads code and starts the application)
59
+ CMD ["./startup.sh"]
startup.sh ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "========================================="
5
+ echo "Polyglot Backend Startup"
6
+ echo "========================================="
7
+
8
+ # Check if app directory exists
9
+ if [ ! -d "/app/app" ]; then
10
+ echo "App code not found. Downloading from private code space..."
11
+
12
+ # Check for required environment variables
13
+ if [ -z "$CODE_SPACE_ID" ]; then
14
+ echo "ERROR: CODE_SPACE_ID environment variable not set"
15
+ echo "Please set it in Space secrets"
16
+ exit 1
17
+ fi
18
+
19
+ if [ -z "$HUGGING_FACE_HUB_TOKEN" ]; then
20
+ echo "ERROR: HUGGING_FACE_HUB_TOKEN environment variable not set"
21
+ echo "Please set it in Space secrets"
22
+ exit 1
23
+ fi
24
+
25
+ echo "Downloading code from: $CODE_SPACE_ID"
26
+ python download_code.py "$CODE_SPACE_ID" "$HUGGING_FACE_HUB_TOKEN"
27
+
28
+ if [ ! -d "/app/app" ]; then
29
+ echo "ERROR: Code download failed"
30
+ exit 1
31
+ fi
32
+
33
+ echo "OK Code downloaded successfully"
34
+ else
35
+ echo "App code already present, skipping download"
36
+ fi
37
+
38
+ echo "========================================="
39
+ echo "Starting uvicorn server..."
40
+ echo "========================================="
41
+
42
+ # Start the application
43
+ exec uvicorn app.main:socket_app --host 0.0.0.0 --port 7860