rgboards/rg-boards
Lanes, team task boards you run from the web or from Claude/ChatGPT (MCP). FastAPI + DataK3 + appid + Dodil Models.
A remix template · 0 remixes · Remix rgboards/rg-boards
app/Dockerfile
# Alpine keeps the image small: Ignite scales to zero and a cold start pulls the image again,
# so every MB is on the first visitor's clock (python:3.12-slim made a 67 MB image, ~5-9 s pull).
FROM python:3.12-alpine
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir --only-binary=:all: -r requirements.txt \
&& pip uninstall -y pip setuptools wheel 2>/dev/null; true
COPY boards ./boards
# Byte-compile at build time: the pod runs as a non-root user that can't write __pycache__,
# so without this every cold start re-compiles the app in memory.
RUN python -m compileall -q boards
# A numeric user: the platform runs pods as non-root and rejects a username.
USER 10001
EXPOSE 8080
CMD ["python", "-m", "uvicorn", "boards.main:app", "--host", "0.0.0.0", "--port", "8080"]