Really-amin commited on
Commit
d2f2b8a
·
verified ·
1 Parent(s): 579fd3c

Update dockerfile

Browse files
Files changed (1) hide show
  1. dockerfile +53 -51
dockerfile CHANGED
@@ -1,65 +1,67 @@
1
- # Stage 1: Builder
2
- FROM python:3.10-slim AS builder
 
3
 
4
- # Install build dependencies
5
- RUN apt-get update && apt-get install -y \
6
- build-essential \
7
- gcc \
8
- g++ \
9
- libffi-dev \
10
- libssl-dev \
11
- && rm -rf /var/lib/apt/lists/*
12
 
13
- # Upgrade pip and install wheel
14
- RUN pip install --upgrade pip setuptools wheel
15
 
16
- # Create virtual environment
17
- RUN python -m venv /opt/venv
18
- ENV PATH="/opt/venv/bin:$PATH"
19
 
20
- # Copy requirements and install dependencies
21
- WORKDIR /build
22
- COPY requirements.txt .
23
- RUN pip install --no-cache-dir -r requirements.txt
24
 
25
- # Stage 2: Production
26
- FROM python:3.10-slim
27
 
28
- # Install runtime dependencies
29
- RUN apt-get update && apt-get install -y \
30
- sqlite3 \
31
- && rm -rf /var/lib/apt/lists/* \
32
- && apt-get clean
33
 
34
- # Create non-root user
35
- RUN groupadd -g 1000 appuser && useradd -r -u 1000 -g appuser appuser
36
 
37
- # Copy virtual environment from builder
38
- COPY --from=builder /opt/venv /opt/venv
39
- ENV PATH="/opt/venv/bin:$PATH"
40
 
41
- # Set working directory
42
- WORKDIR /app
43
 
44
- # Copy all files
45
- COPY --chown=appuser:appuser . .
46
 
47
- # Environment variables
48
- ENV PYTHONPATH=/app
49
- ENV TRANSFORMERS_CACHE=/app/cache
50
- ENV HF_HOME=/app/cache
51
- ENV LOG_LEVEL=INFO
52
- ENV ENVIRONMENT=production
53
- ENV PYTHONUNBUFFERED=1
54
- ENV API_BASE_URL=http://localhost:8000
55
- ENV APP_MODE=gradio
56
 
57
- # Switch to non-root user
58
- USER appuser
59
 
60
- # Expose ports for Gradio and FastAPI
61
- EXPOSE 7860
62
- EXPOSE 8000
63
 
64
- # Start application via run.py
65
- CMD ["python", "run.py"]
 
 
1
+ ```
2
+ # Stage 1: Builder
3
+ FROM python:3.10-slim AS builder
4
 
5
+ # Install build dependencies
6
+ RUN apt-get update && apt-get install -y \
7
+ build-essential \
8
+ gcc \
9
+ g++ \
10
+ libffi-dev \
11
+ libssl-dev \
12
+ && rm -rf /var/lib/apt/lists/*
13
 
14
+ # Upgrade pip and install wheel
15
+ RUN pip install --upgrade pip setuptools wheel
16
 
17
+ # Create virtual environment
18
+ RUN python -m venv /opt/venv
19
+ ENV PATH="/opt/venv/bin:$PATH"
20
 
21
+ # Copy requirements and install dependencies
22
+ WORKDIR /build
23
+ COPY requirements.txt .
24
+ RUN pip install --no-cache-dir -r requirements.txt
25
 
26
+ # Stage 2: Production
27
+ FROM python:3.10-slim
28
 
29
+ # Install runtime dependencies
30
+ RUN apt-get update && apt-get install -y \
31
+ sqlite3 \
32
+ && rm -rf /var/lib/apt/lists/* \
33
+ && apt-get clean
34
 
35
+ # Create non-root user
36
+ RUN groupadd -g 1000 appuser && useradd -r -u 1000 -g appuser appuser
37
 
38
+ # Copy virtual environment from builder
39
+ COPY --from=builder /opt/venv /opt/venv
40
+ ENV PATH="/opt/venv/bin:$PATH"
41
 
42
+ # Set working directory
43
+ WORKDIR /app
44
 
45
+ # Copy all files
46
+ COPY --chown=appuser:appuser . .
47
 
48
+ # Environment variables
49
+ ENV PYTHONPATH=/app
50
+ ENV TRANSFORMERS_CACHE=/app/cache
51
+ ENV HF_HOME=/app/cache
52
+ ENV LOG_LEVEL=INFO
53
+ ENV ENVIRONMENT=production
54
+ ENV PYTHONUNBUFFERED=1
55
+ ENV API_BASE_URL=http://localhost:8000
56
+ ENV APP_MODE=gradio
57
 
58
+ # Switch to non-root user
59
+ USER appuser
60
 
61
+ # Expose ports for Gradio and FastAPI
62
+ EXPOSE 7860
63
+ EXPOSE 8000
64
 
65
+ # Start application via run.py
66
+ CMD ["python", "run.py"]
67
+ ```