Alikhani099961 commited on
Commit
08d97d6
·
verified ·
1 Parent(s): ed7386a

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +53 -0
Dockerfile ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use official Python image
2
+ FROM python:3.9-slim as builder
3
+
4
+ # Set environment variables
5
+ ENV PYTHONDONTWRITEBYTECODE 1
6
+ ENV PYTHONUNBUFFERED 1
7
+ ENV PIP_NO_CACHE_DIR 1
8
+
9
+ # Install system dependencies
10
+ RUN apt-get update && \
11
+ apt-get install -y --no-install-recommends \
12
+ build-essential \
13
+ curl \
14
+ git \
15
+ && rm -rf /var/lib/apt/lists/*
16
+
17
+ # Create and activate virtual environment
18
+ RUN python -m venv /opt/venv
19
+ ENV PATH="/opt/venv/bin:$PATH"
20
+
21
+ # Install Python dependencies
22
+ COPY requirements.txt .
23
+ RUN pip install --upgrade pip && \
24
+ pip install -r requirements.txt
25
+
26
+ # --- Runtime stage ---
27
+ FROM python:3.9-slim
28
+
29
+ # Copy virtual environment from builder
30
+ COPY --from=builder /opt/venv /opt/venv
31
+ ENV PATH="/opt/venv/bin:$PATH"
32
+
33
+ # Create non-root user
34
+ RUN useradd -m -u 1000 user && \
35
+ mkdir -p /app && \
36
+ chown user:user /app
37
+
38
+ # Set working directory
39
+ WORKDIR /app
40
+ USER user
41
+
42
+ # Copy application files
43
+ COPY --chown=user:user . .
44
+
45
+ # Expose Streamlit port
46
+ EXPOSE 8501
47
+
48
+ # Health check
49
+ HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
50
+ CMD curl -f http://localhost:8501/_stcore/health || exit 1
51
+
52
+ # Run application
53
+ CMD ["streamlit", "run", "your_app.py", "--server.port=8501", "--server.address=0.0.0.0"]