FROM nvidia/cuda:12.2.0-cudnn8-devel-ubuntu22.04 # Set a working directory WORKDIR /app # Install system dependencies, including libicu-dev AND a specific older version RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ python3-pip \ libgl1-mesa-glx \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender1 \ ffmpeg \ git \ wget \ libicu-dev \ && rm -rf /var/lib/apt/lists/* # Install a compatible libicu version. We'll try libicu66 first, as suggested. # If that doesn't work, we might need libicu70, libicu71, or others. # This is the CRITICAL FIX based on the Aspose forum post. RUN wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2_amd64.deb && \ dpkg -i libicu66_66.1-2ubuntu2_amd64.deb && \ rm libicu66_66.1-2ubuntu2_amd64.deb # Clone the repository with submodules RUN git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git . # Install Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Install aspose.threed RUN pip install aspose-threed # --- .NET and Library Path Configuration --- # 1. Find the .NET root directory (dynamically) RUN DOTNET_ROOT=$(find / -name "libhostfxr.so" 2>/dev/null | head -n 1 | xargs dirname | xargs dirname) && \ echo "DOTNET_ROOT=$DOTNET_ROOT" >> /etc/environment # 2. Find the libicu.so file (dynamically, could be libicu66!) and add to LD_LIBRARY_PATH RUN LIBICU_PATH=$(find / -name "libicu*.so*" 2>/dev/null | head -n 1 | xargs dirname) && \ echo "LD_LIBRARY_PATH=$LIBICU_PATH:$LD_LIBRARY_PATH" >> /etc/environment # Set environment variable for spconv ENV SPCONV_ALGO=native # Create assets directories RUN mkdir -p assets/example_image assets/example_multi_image # Download example images RUN wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/apple_3.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/avocado_2.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/banana_4.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/buddha_3.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/cat_1.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/cat_2.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/chair_2.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/cherries_1.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/dog_1.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/hotdog_1.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/mushroom_1.png \ && wget -P assets/example_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_image/soccer_1.png RUN wget -P assets/example_multi_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_multi_image/chair_1.png \ && wget -P assets/example_multi_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_multi_image/chair_2.png \ && wget -P assets/example_multi_image https://raw.githubusercontent.com/trellis3d/trellis/main/assets/example_multi_image/chair_3.png # Expose the Gradio port EXPOSE 7860 # Command to run the application CMD ["python", "app.py"]