Problem
No Dockerfile exists. Deployment requires manual installation of Python, system dependencies (texlive/typst), and playwright browsers.
Solution
Create multi-stage Dockerfile:
FROM python:3.11-slim AS base
# Install Typst (replaces texlive - 50MB vs 1GB)
RUN curl -fsSL https://typst.community/typst-install/install.sh | sh
# Install Python dependencies
COPY pyproject.toml poetry.lock ./
RUN pip install poetry && poetry install --no-dev
COPY . .
# Streamlit UI
EXPOSE 8501
CMD ["streamlit", "run", "web_app.py", "--server.port=8501"]
Also create docker-compose.yml for local development:
services:
web:
build: .
ports:
- "8501:8501"
env_file: .env
volumes:
- ./output:/app/output
Acceptance Criteria
Files
Dockerfile (new)
docker-compose.yml (new)
.dockerignore (new)
Problem
No Dockerfile exists. Deployment requires manual installation of Python, system dependencies (texlive/typst), and playwright browsers.
Solution
Create multi-stage Dockerfile:
Also create
docker-compose.ymlfor local development:Acceptance Criteria
docker buildsucceedsdocker-compose upstarts Streamlit UIFiles
Dockerfile(new)docker-compose.yml(new).dockerignore(new)