Skier8402 commited on
Commit
c4be09c
·
verified ·
1 Parent(s): 4037039

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +30 -6
Dockerfile CHANGED
@@ -1,24 +1,48 @@
1
  FROM python:3.13.5-slim
2
 
3
- WORKDIR /app
 
 
 
 
 
4
 
5
  RUN apt-get update && apt-get install -y \
6
  build-essential \
7
  curl \
8
  git \
 
9
  && rm -rf /var/lib/apt/lists/*
10
 
 
 
 
 
 
 
11
  COPY requirements.txt ./
12
  COPY src/ ./src/
13
 
14
- # Ensure logs folder exists and is writable by the container at runtime.
15
- # Using permissive mode for simplicity; tighten permissions if you run as a non-root user.
16
- RUN mkdir -p /app/src/logs && chmod -R a+rwx /app/src/logs
 
 
 
 
 
 
 
17
 
18
- RUN pip3 install -r requirements.txt
 
19
 
20
  EXPOSE 8501
21
 
22
- HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
 
 
 
 
23
 
24
  ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]
 
1
  FROM python:3.13.5-slim
2
 
3
+ # Avoid interactive prompts during build
4
+ ENV DEBIAN_FRONTEND=noninteractive
5
+
6
+ # Create non-root user for better security
7
+ ARG APP_USER=appuser
8
+ ARG APP_HOME=/home/${APP_USER}
9
 
10
  RUN apt-get update && apt-get install -y \
11
  build-essential \
12
  curl \
13
  git \
14
+ ca-certificates \
15
  && rm -rf /var/lib/apt/lists/*
16
 
17
+ # Create app user and working dir early so we can chown files later
18
+ RUN useradd --create-home --home-dir ${APP_HOME} --shell /usr/sbin/nologin ${APP_USER}
19
+
20
+ WORKDIR /app
21
+
22
+ # Copy project files
23
  COPY requirements.txt ./
24
  COPY src/ ./src/
25
 
26
+ # Configure Hugging Face / transformers cache inside container to avoid permission issues
27
+ ENV TRANSFORMERS_CACHE=/app/.cache/huggingface/transformers \
28
+ HUGGINGFACE_HUB_CACHE=/app/.cache/huggingface/hub \
29
+ HF_HOME=/app/.cache/huggingface \
30
+ XDG_CACHE_HOME=/app/.cache \
31
+ HOME=${APP_HOME}
32
+
33
+ # Create cache + logs directories and ensure the app user owns them
34
+ RUN mkdir -p /app/.cache/huggingface/transformers /app/.cache/huggingface/hub /app/src/logs && \
35
+ chown -R ${APP_USER}:${APP_USER} /app/.cache /app/src/logs /app/src
36
 
37
+ # Install Python deps
38
+ RUN pip3 install --no-cache-dir -r requirements.txt
39
 
40
  EXPOSE 8501
41
 
42
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
43
+ CMD curl --fail http://localhost:8501/_stcore/health || exit 1
44
+
45
+ # Run as non-root user
46
+ USER ${APP_USER}
47
 
48
  ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]