mgbam commited on
Commit
b493000
·
verified ·
1 Parent(s): a9e8fde

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +23 -13
Dockerfile CHANGED
@@ -1,52 +1,62 @@
1
  # Dockerfile
2
 
3
- # Stage 1: build dependencies and spaCy model
4
  FROM python:3.10-slim as builder
5
 
6
- ENV PYTHONUNBUFFERED=1 \
7
- PYTHONDONTWRITEBYTECODE=1
 
8
 
9
  WORKDIR /app
10
 
 
11
  RUN apt-get update && \
12
  apt-get install -y --no-install-recommends \
13
  build-essential \
14
  libglib2.0-0 \
15
  libsm6 \
16
  libxrender1 \
17
- libxext6 \
18
- curl && \
19
  rm -rf /var/lib/apt/lists/*
20
 
21
- COPY requirements.txt .
 
 
 
22
  RUN pip install --upgrade pip && \
23
  pip install --no-cache-dir -r requirements.txt && \
24
  python -m spacy download en_core_web_sm
25
 
26
- # Stage 2: final slim image
27
  FROM python:3.10-slim
28
 
29
  WORKDIR /app
30
 
 
 
 
 
 
31
  RUN apt-get update && \
32
  apt-get install -y --no-install-recommends \
33
  libglib2.0-0 \
34
  libsm6 \
35
  libxrender1 \
36
- libxext6 \
37
- curl && \
38
  rm -rf /var/lib/apt/lists/*
39
 
40
- COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
41
- COPY --from=builder /usr/local/bin /usr/local/bin
42
-
43
- COPY . .
44
 
 
45
  RUN groupadd -r appuser && \
46
  useradd -r -g appuser appuser && \
47
  chown -R appuser:appuser /app
 
48
  USER appuser
49
 
 
50
  EXPOSE 8501
51
 
 
52
  ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
 
1
  # Dockerfile
2
 
3
+ # 1. Builder Stage: Install dependencies & spaCy model
4
  FROM python:3.10-slim as builder
5
 
6
+ # Prevent bytecode generation
7
+ ENV PYTHONDONTWRITEBYTECODE=1
8
+ ENV PYTHONUNBUFFERED=1
9
 
10
  WORKDIR /app
11
 
12
+ # System libraries for image processing and builds
13
  RUN apt-get update && \
14
  apt-get install -y --no-install-recommends \
15
  build-essential \
16
  libglib2.0-0 \
17
  libsm6 \
18
  libxrender1 \
19
+ libxext6 && \
 
20
  rm -rf /var/lib/apt/lists/*
21
 
22
+ # Copy over project files for dependency resolution
23
+ COPY requirements.txt /app/
24
+
25
+ # Install Python dependencies and spaCy model
26
  RUN pip install --upgrade pip && \
27
  pip install --no-cache-dir -r requirements.txt && \
28
  python -m spacy download en_core_web_sm
29
 
30
+ # 2. Final Stage: Create slim runtime image
31
  FROM python:3.10-slim
32
 
33
  WORKDIR /app
34
 
35
+ # Copy installed packages and binaries
36
+ COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
37
+ COPY --from=builder /usr/local/bin /usr/local/bin
38
+
39
+ # Install runtime libraries
40
  RUN apt-get update && \
41
  apt-get install -y --no-install-recommends \
42
  libglib2.0-0 \
43
  libsm6 \
44
  libxrender1 \
45
+ libxext6 && \
 
46
  rm -rf /var/lib/apt/lists/*
47
 
48
+ # Copy application source code
49
+ COPY . /app
 
 
50
 
51
+ # Create non-root user for security
52
  RUN groupadd -r appuser && \
53
  useradd -r -g appuser appuser && \
54
  chown -R appuser:appuser /app
55
+
56
  USER appuser
57
 
58
+ # Expose Streamlit port
59
  EXPOSE 8501
60
 
61
+ # Default command to start the app
62
  ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]