63 lines
2.5 KiB
Docker
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"]
|
|
|