DS1517+(Atom C2538)에서 빌드가 30분 이상 걸리던 원인 두 가지를 제거. 1. PyTorch CPU 전용 휠 사용 (backend) PyPI 기본 torch 휠은 nvidia-cublas/cudnn 등 CUDA 패키지를 수 GB 함께 내려받는데 NAS에는 GPU가 없어 전부 불필요했다. download.pytorch.org/whl/cpu 에서 먼저 설치하면 requirements.txt 의 torch 줄은 충족되어 건너뛴다. ml_ensemble 은 이미 지연 임포트라 동작 동일. 2. pip/npm 캐시를 빌드 간 재사용 (backend, mcp-server, frontend) --no-cache-dir 제거하고 RUN --mount=type=cache 로 전환. requirements.txt 가 바뀌어도 받아둔 휠은 재다운로드하지 않는다. Jenkinsfile 에 DOCKER_BUILDKIT/COMPOSE_DOCKER_CLI_BUILD 추가. 부수: frontend Dockerfile 의 FromAsCasing 경고 정리 (as build → AS build). 세 Dockerfile 모두 docker build --check 통과. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.2 KiB
Docker
37 lines
1.2 KiB
Docker
# syntax=docker/dockerfile:1
|
|
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# Python 출력 버퍼링 비활성화 (로그 즉시 출력)
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
# 시스템 의존성 설치
|
|
RUN apt-get update && apt-get install -y \
|
|
gcc \
|
|
postgresql-client \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Python 의존성 설치 (requirements.txt 변경 시에만 재설치 — Docker 캐시 활용)
|
|
COPY requirements.txt .
|
|
|
|
# PyTorch는 CPU 전용 휠로 먼저 설치.
|
|
# PyPI 기본 torch 휠은 NVIDIA CUDA 패키지(nvidia-cublas, nvidia-cudnn 등)를
|
|
# 수 GB 함께 내려받지만 NAS에 GPU가 없어 전부 불필요하다.
|
|
# 여기서 먼저 깔아두면 아래 requirements.txt 의 torch 줄은 이미 충족되어 건너뛴다.
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
pip install torch --index-url https://download.pytorch.org/whl/cpu
|
|
|
|
# 나머지 의존성 — pip 캐시를 빌드 간 재사용 (BuildKit 필요)
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
pip install -r requirements.txt
|
|
|
|
# 애플리케이션 코드 복사 (코드 변경 시에만 이 레이어 갱신)
|
|
COPY . .
|
|
|
|
# 포트 노출
|
|
EXPOSE 8000
|
|
|
|
# 애플리케이션 실행
|
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|