Riley Coleman commited on
Commit
586cdbc
·
1 Parent(s): d49e446

feat: update Docker and Railway config for Streamlit deployment

Browse files
Files changed (2) hide show
  1. Dockerfile +16 -18
  2. railway.json +12 -0
Dockerfile CHANGED
@@ -1,32 +1,30 @@
1
- FROM python:3.11-slim
2
 
3
  WORKDIR /app
4
 
5
- # Install system dependencies required for some Python packages
 
 
 
6
  RUN apt-get update && apt-get install -y \
7
- build-essential \
8
- libxml2-dev \
9
- libxslt1-dev \
10
  && rm -rf /var/lib/apt/lists/*
11
 
12
  # Copy and install Python dependencies
13
- COPY requirements-docker.txt .
14
- RUN pip install --no-cache-dir -r requirements-docker.txt
15
-
16
- # Install Playwright browsers
17
- RUN playwright install chromium
18
 
19
  # Copy application code
20
  COPY . .
21
 
22
- # Create logs directory
23
- RUN mkdir -p _logs
24
 
25
- EXPOSE 8000
26
 
27
- # Set environment variables
28
- ENV PYTHONUNBUFFERED=1
29
- ENV CRAWL_ENABLED=true
30
- ENV CRAWLER_HOUR=2
31
 
32
- CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]
 
 
1
+ FROM python:3.12-slim
2
 
3
  WORKDIR /app
4
 
5
+ ENV PYTHONUNBUFFERED=1
6
+ ENV PYTHONDONTWRITEBYTECODE=1
7
+
8
+ # Install minimal system dependencies
9
  RUN apt-get update && apt-get install -y \
10
+ curl \
 
 
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
  # Copy and install Python dependencies
14
+ COPY requirements-railway.txt .
15
+ RUN pip install --no-cache-dir -r requirements-railway.txt
 
 
 
16
 
17
  # Copy application code
18
  COPY . .
19
 
20
+ # Create logs and cache directories
21
+ RUN mkdir -p logs .gradio
22
 
23
+ EXPOSE 8501
24
 
25
+ # Health check
26
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
27
+ CMD curl -f http://localhost:8501/ || exit 1
 
28
 
29
+ # Run Streamlit
30
+ CMD streamlit run streamlit_app.py --server.port=8501 --server.address=0.0.0.0 --logger.level=warning
railway.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://railway.app/railway.schema.json",
3
+ "build": {
4
+ "builder": "dockerfile",
5
+ "dockerfile": "./Dockerfile"
6
+ },
7
+ "deploy": {
8
+ "startCommand": "streamlit run streamlit_app.py --server.port=8501 --server.address=0.0.0.0 --logger.level=warning",
9
+ "restartPolicyCondition": "on-failure",
10
+ "restartPolicyMaxRetries": 5
11
+ }
12
+ }