FROM ubuntu:20.04 # 환경 변수 설정 (비대화형 설치) ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Seoul # Python 3.9 및 기본 도구 설치 RUN apt-get update && apt-get install -y \ software-properties-common \ && add-apt-repository ppa:deadsnakes/ppa \ && apt-get update \ && apt-get install -y \ python3.9 \ python3.9-dev \ python3.9-distutils \ python3-pip \ python3-setuptools \ python3-wheel \ && rm -rf /var/lib/apt/lists/* # Python 3.9를 기본 python으로 설정 RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 && \ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 # pip 업그레이드 RUN python -m pip install --upgrade pip # 시스템 패키지 설치 (OSMesa 및 headless 렌더링 지원) RUN apt-get update && apt-get install -y \ libgl1-mesa-glx \ libgl1-mesa-dri \ libgl1-mesa-dev \ libglu1-mesa \ libglu1-mesa-dev \ libglfw3 \ libglfw3-dev \ libglib2.0-0 \ libglib2.0-dev \ libsm6 \ libxext6 \ libxrender1 \ libgomp1 \ libx11-6 \ libxrandr2 \ libxinerama1 \ libxcursor1 \ libxi6 \ libasound2 \ libffi-dev \ libssl-dev \ mesa-utils \ xvfb \ libegl1-mesa-dev \ libgles2-mesa-dev \ mesa-common-dev \ libglapi-mesa \ pkg-config \ wget \ curl \ build-essential \ cmake \ git \ && rm -rf /var/lib/apt/lists/* # OSMesa 라이브러리 설치 (Ubuntu 20.04용) - 더 포괄적인 설치 RUN apt-get update && \ apt-get install -y \ libosmesa6-dev \ libosmesa6 \ libgl1-mesa-glx \ libgl1-mesa-dri \ libgl1-mesa-dev \ libglu1-mesa \ libglu1-mesa-dev \ mesa-utils \ mesa-common-dev \ libglapi-mesa \ libegl1-mesa-dev \ libgles2-mesa-dev \ && rm -rf /var/lib/apt/lists/* # OSMesa 라이브러리 링크 생성 및 검증 RUN echo "OSMesa 라이브러리 설치 상태 확인..." && \ find /usr -name "*OSMesa*" -type f 2>/dev/null && \ ls -la /usr/lib/x86_64-linux-gnu/libOSMesa* && \ ln -sf /usr/lib/x86_64-linux-gnu/libOSMesa.so.8 /usr/lib/x86_64-linux-gnu/libOSMesa.so && \ ln -sf /usr/lib/x86_64-linux-gnu/libOSMesa.so.8 /usr/lib/libOSMesa.so && \ echo "OSMesa 라이브러리 링크 생성 완료" # OSMesa 설치 검증 RUN echo "OSMesa 설치 상태를 확인합니다..." && \ ls -la /usr/lib/x86_64-linux-gnu/libOSMesa* && \ dpkg -l | grep -E "(libosmesa|libgl)" && \ echo "OSMesa 설치 검증 완료" # 작업 디렉토리 설정 WORKDIR /app # OSMesa 렌더링을 위한 환경 변수 설정 (최적화된 설정) ENV PYOPENGL_PLATFORM=osmesa ENV MESA_GL_VERSION_OVERRIDE=3.3 ENV MESA_GLSL_VERSION_OVERRIDE=330 ENV OSMESA_HEADLESS=1 ENV OPEN3D_HEADLESS=1 ENV DISPLAY=:99 ENV LIBGL_ALWAYS_SOFTWARE=1 ENV GALLIUM_DRIVER=llvmpipe ENV LIBGL_ALWAYS_INDIRECT=1 ENV MESA_LOADER_DRIVER_OVERRIDE=llvmpipe ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH # Python 의존성 설치 COPY requirements.txt . RUN python -m pip install --upgrade pip && \ python -m pip install --no-cache-dir --timeout 1000 -r requirements.txt # 애플리케이션 코드 복사 COPY . . # 실행 권한 부여 RUN chmod +x main.py # 기본 실행 명령 CMD ["python", "main.py"]