nsedash / Dockerfile
Sam-max1's picture
Deploy bare minimum codebase for nsedash
26f4baa verified
Raw
History Blame Contribute Delete
1.41 kB
FROM python:3.12-slim
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV NSEDASH_BASE_DIR=/app
ENV PYTHONPATH=/app
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Download and install precompiled TA-Lib binary wheel based on architecture
RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
WHL_URL="https://github.com/quantmew/talib-prebuilt/releases/download/v0.6.4/ta_lib-0.6.4-cp312-cp312-manylinux_2_28_x86_64.whl"; \
elif [ "$ARCH" = "aarch64" ]; then \
WHL_URL="https://github.com/quantmew/talib-prebuilt/releases/download/v0.6.4/ta_lib-0.6.4-cp312-cp312-manylinux_2_28_aarch64.whl"; \
else \
echo "Unsupported architecture: $ARCH" && exit 1; \
fi && \
pip install --no-cache-dir "$WHL_URL"
# Copy requirements and install python packages
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
# Create a user with UID 1000 and ensure workdir is owned by user
RUN useradd -m -u 1000 user && mkdir -p /app && chown -R user:user /app
ENV HOME=/home/user
# Copy application files and change ownership to user
COPY --chown=user . /app/
# Switch to the non-root user
USER user
# Expose HF Spaces port
EXPOSE 7860
# Run Flask dashboard
CMD ["python", "nsedash_app.py"]