39 lines
1014 B
Plaintext
39 lines
1014 B
Plaintext
FROM python:3.14-alpine
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy requirements first for better caching
|
|
COPY backend/requirements.txt /app/requirements.txt
|
|
|
|
# Install TA-Lib C library and build dependencies, then install Python dependencies and clean up
|
|
RUN apk add --no-cache --virtual .build-deps \
|
|
gcc \
|
|
g++ \
|
|
make \
|
|
musl-dev \
|
|
wget \
|
|
tar \
|
|
cargo \
|
|
rust \
|
|
&& wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz \
|
|
&& tar -xzf ta-lib-0.4.0-src.tar.gz \
|
|
&& cd ta-lib/ \
|
|
&& ./configure --prefix=/usr \
|
|
&& make \
|
|
&& make install \
|
|
&& cd .. \
|
|
&& rm -rf ta-lib ta-lib-0.4.0-src.tar.gz \
|
|
&& pip install --no-cache-dir -r requirements.txt \
|
|
&& apk del .build-deps \
|
|
&& rm -rf /var/cache/apk/* /root/.cache /root/.cargo /root/.rustup
|
|
|
|
# Copy application code
|
|
COPY backend/src /app/src
|
|
|
|
# Expose port
|
|
EXPOSE 8000
|
|
|
|
# Run the application
|
|
CMD ["python", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]
|