Sofia Casadei commited on
Commit
2fffc78
·
1 Parent(s): 10aed94

dockerfile using pip

Browse files
Files changed (2) hide show
  1. Dockerfile +12 -37
  2. Dockerfile.uv +49 -0
Dockerfile CHANGED
@@ -1,54 +1,29 @@
1
- # Stage 1: Get uv installer
2
- FROM ghcr.io/astral-sh/uv:0.2.12 as uv
3
-
4
- # Stage 2: Main application image
5
  FROM python:3.10.12-slim-bookworm
6
 
7
- # Copy uv from first stage
8
- COPY --from=uv /uv /uv
9
-
10
- # Create virtual environment with uv
11
- RUN --mount=type=cache,target=/root/.cache/uv \
12
- /uv venv /opt/venv
13
-
14
- # Set environment variables
15
- ENV VIRTUAL_ENV=/opt/venv \
16
- PATH="/opt/venv/bin:$PATH"
17
-
18
- # Install system dependencies
19
- RUN apt-get update && apt-get install -y \
20
- portaudio19-dev \
21
- && rm -rf /var/lib/apt/lists/*
22
-
23
- # Create user and set permissions (required for HF Spaces)
24
  RUN useradd -m -u 1000 user && \
25
  chown -R user /opt/venv
26
 
27
- # Switch to user context
28
  USER user
29
  WORKDIR /app
30
 
31
- # Set home to user's home directory
32
  ENV HOME=/home/user \
33
  PATH=/home/user/.local/bin:$PATH \
34
- HF_HOME=/home/user/.cache/huggingface \
35
- UV_CACHE_DIR=/app/.uv-cache
36
-
37
- # Create cache directory with proper permissions
38
- RUN mkdir -p $UV_CACHE_DIR && chown -R user:user $UV_CACHE_DIR
39
 
40
- # Copy requirements first for caching
41
  COPY --chown=user requirements.txt .
 
 
42
 
43
- # Install Python packages with uv caching
44
- RUN --mount=type=cache,target=$UV_CACHE_DIR,uid=1000,gid=1000 \
45
- /uv pip install -r requirements.txt
46
-
47
- # Copy application code
48
  COPY --chown=user . .
49
 
50
- # Expose FastRTC port (matches HF Spaces default)
51
  EXPOSE 7860
52
 
53
- # Start the application using uvicorn (FastAPI)
54
- CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
 
1
+ # Single stage build
 
 
 
2
  FROM python:3.10.12-slim-bookworm
3
 
4
+ # Create user with ID 1000 (required by HF Spaces)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  RUN useradd -m -u 1000 user && \
6
  chown -R user /opt/venv
7
 
8
+ # Switch to non-root user context (matches security requirements)
9
  USER user
10
  WORKDIR /app
11
 
12
+ # Set home directory (aligns with doc's permission guidance)
13
  ENV HOME=/home/user \
14
  PATH=/home/user/.local/bin:$PATH \
15
+ HF_HOME=/home/user/.cache/huggingface
 
 
 
 
16
 
17
+ # Install dependencies with pip (same approach as doc's example)
18
  COPY --chown=user requirements.txt .
19
+ RUN pip install --no-cache-dir --upgrade pip && \
20
+ pip install --no-cache-dir -r requirements.txt
21
 
22
+ # Copy application code (same pattern)
 
 
 
 
23
  COPY --chown=user . .
24
 
25
+ # Expose correct port (matches doc's default 7860)
26
  EXPOSE 7860
27
 
28
+ # Identical CMD to doc's FastAPI example
29
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
Dockerfile.uv ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 1: Get uv installer
2
+ FROM ghcr.io/astral-sh/uv:0.2.12 as uv
3
+
4
+ # Stage 2: Main application image
5
+ FROM python:3.10.12-slim-bookworm
6
+
7
+ # Copy uv from first stage
8
+ COPY --from=uv /uv /uv
9
+
10
+ # Create virtual environment with uv
11
+ RUN --mount=type=cache,target=/root/.cache/uv \
12
+ /uv venv /opt/venv
13
+
14
+ # Set environment variables
15
+ ENV VIRTUAL_ENV=/opt/venv \
16
+ PATH="/opt/venv/bin:$PATH"
17
+
18
+ # Create user and set permissions (required for HF Spaces)
19
+ RUN useradd -m -u 1000 user && \
20
+ chown -R user /opt/venv
21
+
22
+ # Switch to user context
23
+ USER user
24
+ WORKDIR /app
25
+
26
+ # Set home to user's home directory
27
+ ENV HOME=/home/user \
28
+ PATH=/home/user/.local/bin:$PATH \
29
+ HF_HOME=/home/user/.cache/huggingface \
30
+ UV_CACHE_DIR=/app/.uv-cache
31
+
32
+ # Create cache directory with proper permissions
33
+ RUN mkdir -p $UV_CACHE_DIR && chown -R user:user $UV_CACHE_DIR
34
+
35
+ # Copy requirements first for caching
36
+ COPY --chown=user requirements.txt .
37
+
38
+ # Install Python packages with uv caching
39
+ RUN --mount=type=cache,target=$UV_CACHE_DIR,uid=1000,gid=1000 \
40
+ /uv pip install -r requirements.txt
41
+
42
+ # Copy application code
43
+ COPY --chown=user . .
44
+
45
+ # Expose FastRTC port (matches HF Spaces default)
46
+ EXPOSE 7860
47
+
48
+ # Start the application using uvicorn (FastAPI)
49
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]