44 lines
2.0 KiB
Docker
44 lines
2.0 KiB
Docker
FROM python:3.11-slim
|
|
|
|
# ── System deps (cmake, g++, just) ────────────────────────────────────────────
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
cmake \
|
|
g++ \
|
|
make \
|
|
curl \
|
|
&& curl -fsSL https://just.systems/install.sh | bash -s -- --to /usr/local/bin \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── Python deps ───────────────────────────────────────────────────────────────
|
|
WORKDIR /app
|
|
COPY pyproject.toml ./
|
|
RUN pip install --no-cache-dir \
|
|
streamlit \
|
|
plotly \
|
|
yfinance \
|
|
pandas \
|
|
numpy
|
|
|
|
# ── Copy source ───────────────────────────────────────────────────────────────
|
|
COPY core/ ./core/
|
|
COPY strategies/ ./strategies/
|
|
COPY scripts/ ./scripts/
|
|
COPY app.py ./
|
|
COPY CMakeLists.txt ./
|
|
COPY Justfile ./
|
|
|
|
# ── Build C++ core ────────────────────────────────────────────────────────────
|
|
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release \
|
|
&& cmake --build build -j$(nproc)
|
|
|
|
# ── Runtime dirs ─────────────────────────────────────────────────────────────
|
|
RUN mkdir -p data results
|
|
|
|
EXPOSE 8501
|
|
|
|
# ── Entrypoint ────────────────────────────────────────────────────────────────
|
|
CMD ["streamlit", "run", "app.py", \
|
|
"--server.address=0.0.0.0", \
|
|
"--server.port=8501", \
|
|
"--server.headless=true"]
|