FROM python:3.11-slim WORKDIR /app # 시스템 패키지 설치 # - gosu: entrypoint 에서 root→appuser 강등용 # - imagemagick + libheif: HEIC(iPhone) 등 pillow_heif 가 처리 못하는 이미지 fallback (2026-04-09) RUN apt-get update && apt-get install -y \ gcc \ gosu \ imagemagick \ libheif1 \ && rm -rf /var/lib/apt/lists/* \ && sed -i 's|||' /etc/ImageMagick-6/policy.xml 2>/dev/null || true # Python 의존성 설치 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # non-root user 생성 RUN groupadd -r appuser && useradd -r -g appuser appuser # 애플리케이션 파일 복사 COPY --chown=appuser:appuser . . # uploads 디렉토리 생성 (entrypoint 가 볼륨 마운트 후 재-chown) RUN mkdir -p /app/uploads && chown appuser:appuser /app/uploads # entrypoint 실행권한 RUN chmod +x /app/entrypoint.sh # 포트 노출 EXPOSE 8000 # 실행 (root 로 시작 → entrypoint 에서 chown → gosu 로 appuser 강등) # USER 지시어는 entrypoint 에서 직접 처리하므로 생략한다. ENTRYPOINT ["/app/entrypoint.sh"] CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]