ImageProcessor_MainServer/Dockerfile.worker.tersorrt

63 lines
2.5 KiB
Docker

# CUDA 11.8 + Ubuntu 22.04 + cuDNN8 + TensorRT 8.6 + Python3.10
FROM nvcr.io/nvidia/tensorrt:23.10-py3
#FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
# ---------- 시스템 의존성 (Pango/Cairo/HarfBuzz/Fonts 포함) ----------
RUN apt-get update && apt-get install -y --no-install-recommends \
python3.10 python3-pip python3.10-distutils \
# OpenCV 런타임
libgl1-mesa-glx libgl1-mesa-dri libglib2.0-0 libgomp1 \
libsm6 libxext6 libxrender1 \
cuda-cudart-dev-11-8 \
# Pango / Cairo / HarfBuzz / GI 바인딩
libcairo2 libcairo2-dev \
libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 \
libharfbuzz0b libharfbuzz-icu0 \
gobject-introspection libgirepository1.0-dev \
python3-gi python3-gi-cairo \
# 글꼴과 폰트 설정
fontconfig fonts-nanum fonts-noto-cjk fonts-dejavu-core \
# 기타
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# ---------- Python 기본 설정 ----------
RUN ln -sf /usr/bin/python3.10 /usr/local/bin/python && \
python -m pip install --upgrade pip
WORKDIR /app
# ---------- 파이썬 패키지 ----------
COPY requirements_worker.txt .
COPY packages_worker/fastdeploy_gpu_python-1.0.7-cp310-cp310-manylinux1_x86_64.whl .
# constraints 복사
COPY constraints.txt .
RUN pip install --no-cache-dir --progress-bar off \
--index-url https://download.pytorch.org/whl/cu118 \
torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1
RUN pip install --no-cache-dir --progress-bar off -r requirements_worker.txt -c constraints.txt
RUN pip install --no-cache-dir --progress-bar off fastdeploy_gpu_python-1.0.7-cp310-cp310-manylinux1_x86_64.whl
# ---------- 메모리 추척 ----------
RUN pip install --no-cache-dir --progress-bar off pynvml
# ---------- 프로젝트 파일 ----------
COPY worker /app/worker
# COPY fonts /app/fonts
ENV PYTHONUNBUFFERED=1
ENV TEMP_STORAGE=/app/temp_files
RUN mkdir -p $TEMP_STORAGE
# (선택) TensorRT 런타임이 정말 필요하면 NVIDIA 레포 추가 후 libnvinfer8 설치 필요.
# 없다면 FastDeploy가 자동으로 Paddle Inference로 폴백하니 생략해도 동작은 함.
# 성능 이유로 TRT를 쓰려면 별도 설치 가이드대로 세팅 권장.
# ---------- Celery 엔트리포인트 ----------
# ★ 중요: -A 경로를 실제 celery_app 이 있는 모듈:변수 로 맞추세요.
# 예) celery_worker.py 안에 celery_app = Celery(...) 라면:
CMD ["celery", "-A", "worker.celery_worker:celery_app", "worker", "-l", "info", "--concurrency=1"]