# ============================================================ # PharmAI HuggingFace Docker Space # R + Python + Node.js 통합 환경 # ============================================================ FROM rocker/r-ver:4.4.0 # ── 시스템 패키지 설치 ────────────────────────────────────── RUN apt-get update && apt-get install -y --no-install-recommends \ # Python python3.10 \ python3-pip \ python3-dev \ # Java (rcdk 패키지 의존성) default-jdk \ # R 패키지 컴파일 의존성 libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ libgfortran5 \ libopenblas-dev \ liblapack-dev \ build-essential \ # 기타 curl \ git \ ca-certificates \ gnupg \ && rm -rf /var/lib/apt/lists/* # Node.js 20 설치 (apt 기본 버전은 너무 낮음, Vite 요구사항: Node 14.18+) RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && rm -rf /var/lib/apt/lists/* # Java 환경 설정 (rcdk용) RUN R CMD javareconf # ── R 패키지 설치 ────────────────────────────────────────── # Posit Package Manager (PPM) - Ubuntu 22.04(Jammy) 바이너리 제공 # 소스 컴파일 없이 설치되어 빌드 시간 대폭 단축 ENV RENV_PPM_URL=https://packagemanager.posit.co/cran/__linux__/jammy/latest RUN R -e "options(repos = c(PPM = Sys.getenv('RENV_PPM_URL'))); \ install.packages(c('jsonlite', 'readxl', 'dplyr', 'tidyr', 'ggplot2', \ 'RColorBrewer', 'gridExtra', 'units', 'utf8', 'progress', \ 'rxode2', 'ncappc', 'rcdk'), dependencies=TRUE)" # ── 작업 디렉토리 설정 ───────────────────────────────────── WORKDIR /app # ── Python 패키지 설치 ───────────────────────────────────── COPY backend/requirements.txt backend/requirements.txt RUN pip3 install --no-cache-dir -r backend/requirements.txt # 추가: uvicorn, aiofiles, huggingface_hub (모델 다운로드용) RUN pip3 install --no-cache-dir "uvicorn[standard]" aiofiles huggingface_hub # ── 프론트엔드 빌드 ──────────────────────────────────────── COPY frontend/package.json frontend/package-lock.json* frontend/pnpm-lock.yaml* ./frontend/ RUN cd frontend && npm install --legacy-peer-deps COPY frontend/ frontend/ RUN cd frontend && npm run build # ── 전체 소스 복사 ───────────────────────────────────────── COPY . . # ── 권한 설정 ────────────────────────────────────────────── RUN chmod +x startup.sh && \ mkdir -p pbpk_engine/results && \ chmod -R 777 pbpk_engine/results # ── 포트 노출 ────────────────────────────────────────────── EXPOSE 7860 # ── 시작 명령 ────────────────────────────────────────────── CMD ["./startup.sh"]