# Use NVIDIA CUDA runtime as parent image (includes CUDA 12.1 + cuDNN 8) FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 # Avoid interactive timezone prompt ENV DEBIAN_FRONTEND=noninteractive # Set the working directory in the container WORKDIR /MoneyPrinterTurbo RUN chmod 777 /MoneyPrinterTurbo ENV PYTHONPATH="/MoneyPrinterTurbo" # Install Python 3.11 and system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ software-properties-common \ git \ ffmpeg \ curl \ && add-apt-repository ppa:deadsnakes/ppa \ && apt-get update && apt-get install -y --no-install-recommends \ python3.11 \ python3.11-venv \ python3.11-dev \ python3-pip \ && ln -sf /usr/bin/python3.11 /usr/bin/python3 \ && ln -sf /usr/bin/python3.11 /usr/bin/python \ && python3.11 -m pip install --upgrade pip \ && apt-get remove -y python3-blinker || true \ && rm -rf /var/lib/apt/lists/* # Copy only the requirements.txt first to leverage Docker cache COPY requirements.txt ./ # Install Python dependencies RUN python3 -m pip install --no-cache-dir \ -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \ --retries 3 --timeout 60 -r requirements.txt || \ python3 -m pip install --no-cache-dir \ -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ --trusted-host mirrors.tuna.tsinghua.edu.cn \ --retries 3 --timeout 60 -r requirements.txt || \ python3 -m pip install --no-cache-dir \ --retries 3 --timeout 60 -r requirements.txt # Now copy the rest of the codebase into the image COPY . . # Expose the port the app runs on EXPOSE 8501 # 容器内部必须监听 0.0.0.0,宿主机仍通过 docker 端口映射限制为 127.0.0.1。 # browser.serverAddress 只决定浏览器展示的访问地址,不能替代 server.address。 CMD ["streamlit", "run", "./webui/Main.py", "--server.address=0.0.0.0", "--server.port=8501", "--browser.serverAddress=127.0.0.1", "--server.enableCORS=True", "--browser.gatherUsageStats=False", "--client.toolbarMode=minimal", "--logger.hideWelcomeMessage=True", "--server.showEmailPrompt=False"]