# AI 전문가 양성 과정 - 개발용 Docker 이미지
# Python 3.9 기반의 개발 환경을 제공합니다.

FROM python:3.9-slim

# 작업 디렉토리 설정
WORKDIR /app

# 시스템 패키지 업데이트 및 필수 도구 설치
RUN apt-get update && apt-get install -y \
    git \
    wget \
    curl \
    build-essential \
    pkg-config \
    libffi-dev \
    libssl-dev \
    libxml2-dev \
    libxslt1-dev \
    libjpeg-dev \
    libpng-dev \
    libfreetype6-dev \
    zlib1g-dev \
    libblas-dev \
    liblapack-dev \
    gfortran \
    graphviz \
    && rm -rf /var/lib/apt/lists/*

# Python 패키지 관리자 업그레이드
RUN pip install --upgrade pip setuptools wheel

# 기본 Python 패키지 설치 (레이어 캐싱 최적화)
COPY requirements.txt .
RUN pip install -r requirements.txt

# 개발용 추가 패키지 설치
RUN pip install \
    # Jupyter 관련
    jupyter \
    jupyterlab \
    ipywidgets \
    jupyter-contrib-nbextensions \
    # 개발 도구
    black \
    isort \
    flake8 \
    mypy \
    pytest \
    pre-commit \
    # 시각화 라이브러리
    plotly \
    bokeh \
    dash \
    # 딥러닝 프레임워크 (CPU 버전)
    torch \
    torchvision \
    torchaudio \
    tensorflow \
    # NLP 라이브러리
    transformers \
    datasets \
    nltk \
    spacy \
    # MLOps 도구
    mlflow \
    wandb \
    # 기타 유용한 라이브러리
    python-dotenv \
    requests \
    beautifulsoup4 \
    schedule

# 프로젝트 파일 복사
COPY . .

# 스크립트 파일에 실행 권한 부여
RUN chmod +x scripts/*.sh || true

# 환경변수 설정
ENV PYTHONPATH=/app
ENV JUPYTER_ENABLE_LAB=yes
ENV JUPYTER_TOKEN=ai_course_token

# Jupyter Lab 설정
RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager --no-build && \
    jupyter lab build --minimize=False

# 포트 노출
EXPOSE 8888 8000 5000

# 개발용 시작 명령어 (Jupyter Lab)
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--token=ai_course_token"]

# 헬스체크 추가
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:8888/lab || exit 1 