myco-bonding-curve/Dockerfile

25 lines
893 B
Docker

FROM python:3.12-slim AS builder
WORKDIR /build
COPY pyproject.toml .
COPY src/ src/
COPY dashboard/ dashboard/
RUN pip install --no-cache-dir ".[dashboard]"
FROM python:3.12-slim
WORKDIR /app
ENV PYTHONPATH=/app
RUN useradd --create-home appuser
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY src/ src/
COPY dashboard/ dashboard/
COPY pyproject.toml .
RUN chown -R appuser:appuser /app
USER appuser
EXPOSE 8501
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8501/_stcore/health')"
ENTRYPOINT ["streamlit", "run", "dashboard/app.py", \
"--server.port=8501", "--server.address=0.0.0.0", \
"--server.headless=true", "--browser.gatherUsageStats=false"]