FROM ubuntu:24.04

# Install Python and pip
RUN apt-get update && \
    apt-get install -y python3 python3-pip python3-venv && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Copy requirements first for better caching
COPY requirements.txt /tmp/requirements.txt

# Install Python dependencies
RUN python3 -m pip install --no-cache-dir -r /tmp/requirements.txt --break-system-packages

# Copy Python script to /usr/local/bin so it survives volume mounts
COPY picopaper.py /usr/local/bin/picopaper.py

# Bake the default blog content into the image. The `new` command copies these
# into the working directory to scaffold a fresh blog without cloning the repo.
# Only user content is included — not picopaper.py/requirements.txt/.gitignore.
ENV PICOPAPER_SKELETON=/usr/local/share/picopaper/skeleton
COPY config.py /usr/local/share/picopaper/skeleton/
COPY theme/  /usr/local/share/picopaper/skeleton/theme/
COPY items/  /usr/local/share/picopaper/skeleton/items/
COPY images/ /usr/local/share/picopaper/skeleton/images/
COPY static/ /usr/local/share/picopaper/skeleton/static/

# Set working directory
WORKDIR /app

# Add /app to Python path so it can find config.py from mounted volume
ENV PYTHONPATH=/app

# Run as root to allow writing to mounted volumes
# (The mounted volume will have host user permissions)

# With no command the site is generated; pass `new` to scaffold a blog instead:
#   podman run ... picopaper:latest        -> build the site (default)
#   podman run ... picopaper:latest new    -> create a new blog in the current dir
ENTRYPOINT ["python3", "/usr/local/bin/picopaper.py"]
CMD []
