File size: 2,390 Bytes
66dc1bf
 
 
4ee77da
 
 
66dc1bf
3250bcb
 
 
 
 
 
 
 
 
 
 
786d958
 
 
 
3250bcb
 
 
66dc1bf
 
3250bcb
 
 
4ee77da
 
 
 
 
 
 
 
66dc1bf
 
 
3250bcb
 
 
66dc1bf
 
 
 
3250bcb
66dc1bf
 
 
3250bcb
56f6edb
4ee77da
 
66dc1bf
3250bcb
66dc1bf
 
3250bcb
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    DEBIAN_FRONTEND=noninteractive \
    PIP_NO_CACHE_DIR=1

# --------------------------------------------------------------------
# System deps for builds (numpy/scipy, lxml, TA-Lib) + unixODBC + MS ODBC
# --------------------------------------------------------------------
RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
        build-essential curl wget git ca-certificates gnupg apt-transport-https \
        libxml2-dev libxslt1-dev zlib1g-dev \
        libjpeg-dev libpng-dev \
        libopenblas-dev liblapack-dev gfortran \
        unixodbc unixodbc-dev; \
    # Add Microsoft repo key (no apt-key) and point to Debian 12 (bookworm)
    curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
      | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg; \
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" \
      > /etc/apt/sources.list.d/microsoft-prod.list; \
    apt-get update; \
    ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql18 mssql-tools18; \
    rm -rf /var/lib/apt/lists/*

# -------------------------------------------------
# Build and install TA-Lib C library (as you had)
# -------------------------------------------------
RUN set -ex \
 && curl -fsSL -o /tmp/ta-lib.tgz http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz \
 && tar -xzf /tmp/ta-lib.tgz -C /tmp \
 && cd /tmp/ta-lib* \
 && ./configure --prefix=/usr \
 && make \
 && make install \
 && rm -rf /tmp/ta-lib* /tmp/ta-lib.tgz

WORKDIR /app

# --------------------------
# Python deps (layer cache)
# --------------------------
COPY requirements.txt /app/requirements.txt
RUN python -m pip install --upgrade pip && \
    pip install --no-cache-dir -r /app/requirements.txt

# PyTorch CPU
RUN pip install --no-cache-dir --index-url https://download.pytorch.org/whl/cpu \
    torch torchvision torchaudio

# NLTK data
ENV NLTK_DATA=/usr/local/share/nltk_data
RUN mkdir -p "$NLTK_DATA" && \
    python -c "import nltk; nltk.download('vader_lexicon', download_dir='$NLTK_DATA')"

# App code
COPY . /app

# Gunicorn entrypoint (Hugging Face sets $PORT)
CMD ["bash", "-lc", "gunicorn -w 1 -k gthread -b 0.0.0.0:${PORT:-7860} pytrade:app --timeout 180"]