mgbam commited on
Commit
c6240ca
Β·
verified Β·
1 Parent(s): 4372b0a

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +26 -10
Dockerfile CHANGED
@@ -1,36 +1,52 @@
1
- # Dockerfile
2
-
3
  FROM python:3.10-slim AS builder
4
- ENV PYTHONDONTWRITEBYTECODE=1
5
- ENV PYTHONUNBUFFERED=1
 
6
 
7
  WORKDIR /app
8
 
 
9
  RUN apt-get update && apt-get install -y --no-install-recommends \
10
  build-essential libglib2.0-0 libsm6 libxrender1 libxext6 \
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
- COPY requirements.txt .
14
- RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt
 
 
 
15
  RUN python -m spacy download en_core_web_sm
16
 
 
17
  FROM python:3.10-slim
18
 
 
 
 
 
 
 
 
19
  WORKDIR /app
20
 
21
  RUN apt-get update && apt-get install -y --no-install-recommends \
22
  libglib2.0-0 libsm6 libxrender1 libxext6 \
23
  && rm -rf /var/lib/apt/lists/*
24
 
 
25
  COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
26
  COPY --from=builder /usr/local/bin /usr/local/bin
27
 
28
- COPY . .
 
29
 
30
- RUN groupadd -r appuser && useradd -r -g appuser appuser && \
31
- chown -R appuser:appuser /app
 
32
  USER appuser
33
 
34
  EXPOSE 7860
35
 
36
- ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
 
 
1
+ # ─────────────── Stage 1: build Python deps ───────────────
 
2
  FROM python:3.10-slim AS builder
3
+
4
+ ENV PYTHONDONTWRITEBYTECODE=1 \
5
+ PYTHONUNBUFFERED=1
6
 
7
  WORKDIR /app
8
 
9
+ # basic C / system libs for wheels that need compile
10
  RUN apt-get update && apt-get install -y --no-install-recommends \
11
  build-essential libglib2.0-0 libsm6 libxrender1 libxext6 \
12
  && rm -rf /var/lib/apt/lists/*
13
 
14
+ COPY requirements.txt /
15
+ RUN pip install --upgrade pip \
16
+ && pip install --no-cache-dir -r /requirements.txt
17
+
18
+ # download the small spaCy English model at build-time
19
  RUN python -m spacy download en_core_web_sm
20
 
21
+ # ─────────────── Stage 2: runtime image ────────────────────
22
  FROM python:3.10-slim
23
 
24
+ # ‼️ fix Streamlit "permission denied /.streamlit" issue
25
+ ENV STREAMLIT_DATA_DIR=/tmp/.streamlit \
26
+ XDG_STATE_HOME=/tmp \
27
+ STREAMLIT_BROWSER_GATHERUSAGESTATS=false
28
+
29
+ RUN mkdir -p /tmp/.streamlit
30
+
31
  WORKDIR /app
32
 
33
  RUN apt-get update && apt-get install -y --no-install-recommends \
34
  libglib2.0-0 libsm6 libxrender1 libxext6 \
35
  && rm -rf /var/lib/apt/lists/*
36
 
37
+ # copy installed libs from builder
38
  COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
39
  COPY --from=builder /usr/local/bin /usr/local/bin
40
 
41
+ # app source
42
+ COPY . /app
43
 
44
+ # non-root user for security
45
+ RUN groupadd -r appuser && useradd -r -g appuser appuser \
46
+ && chown -R appuser:appuser /app
47
  USER appuser
48
 
49
  EXPOSE 7860
50
 
51
+ # Streamlit entry
52
+ ENTRYPOINT ["streamlit", "run", "app.py", "--server.address=0.0.0.0", "--server.port=7860"]