# deployment/container/Dockerfile-base FROM python:3.11-slim # 메타데이터 LABEL maintainer="admin@example.com" LABEL description="카카오맵 리뷰 분석 API - Base Image with Chrome (AKS 최적화)" LABEL version="base-1.0.2" # 환경 변수 설정 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ DEBIAN_FRONTEND=noninteractive \ CHROME_BIN=/usr/bin/google-chrome \ CHROMEDRIVER_BIN=/usr/local/bin/chromedriver # 🔧 필수 패키지 설치 (VM setup.sh와 동일한 패키지들) RUN apt-get update && apt-get install -y \ python3-pip \ python3-venv \ unzip \ wget \ curl \ ca-certificates \ fonts-liberation \ libasound2 \ libatk-bridge2.0-0 \ libdrm2 \ libxcomposite1 \ libxdamage1 \ libxrandr2 \ libgbm1 \ libxss1 \ libnss3 \ libxext6 \ libxfixes3 \ libxi6 \ libxrender1 \ libcairo-gobject2 \ libgtk-3-0 \ libgdk-pixbuf2.0-0 \ libgtk-3-dev \ libgconf-2-4 \ && rm -rf /var/lib/apt/lists/* # 🔧 Google Chrome 설치 (VM setup.sh와 동일한 방식) RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \ && apt-get update \ && apt-get install -y google-chrome-stable \ && rm -rf /var/lib/apt/lists/* # Chrome 설치 확인 RUN google-chrome --version # 🔧 ChromeDriver 설치 (VM setup.sh와 동일한 방식) RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+' | cut -d'.' -f1) \ && echo "Chrome 주 버전: $CHROME_VERSION" \ && CHROMEDRIVER_VERSION=$(curl -s "https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_$CHROME_VERSION") \ && echo "ChromeDriver 버전: $CHROMEDRIVER_VERSION" \ && wget -q "https://storage.googleapis.com/chrome-for-testing-public/$CHROMEDRIVER_VERSION/linux64/chromedriver-linux64.zip" -O /tmp/chromedriver.zip \ && unzip -q /tmp/chromedriver.zip -d /tmp/ \ && mv /tmp/chromedriver-linux64/chromedriver /usr/local/bin/chromedriver \ && chmod +x /usr/local/bin/chromedriver \ && rm -rf /tmp/chromedriver* \ && chromedriver --version # Chrome 및 ChromeDriver 최종 확인 RUN echo "=== Chrome 정보 ===" \ && google-chrome --version \ && echo "=== ChromeDriver 정보 ===" \ && chromedriver --version \ && echo "=== 설치 경로 확인 ===" \ && ls -la /usr/bin/google-chrome* \ && ls -la /usr/local/bin/chromedriver # 🔧 Chrome 실행을 위한 디렉토리 생성 RUN mkdir -p /tmp/chrome-user-data \ && mkdir -p /home/appuser/.cache/selenium \ && mkdir -p /home/appuser/.wdm \ && mkdir -p /home/appuser/.local/share \ && chmod 777 /tmp/chrome-user-data # 🔧 비root 사용자 생성 (하지만 Chrome은 root로 실행) RUN groupadd -r appuser && useradd -r -g appuser -d /home/appuser -s /bin/bash appuser \ && mkdir -p /home/appuser \ && chown -R appuser:appuser /home/appuser # 작업 디렉토리 생성 WORKDIR /app RUN chown appuser:appuser /app # pip 업그레이드 RUN pip install --no-cache-dir --upgrade pip # Chrome 실행 테스트 (빌드 시 검증) RUN google-chrome --headless --no-sandbox --disable-dev-shm-usage --virtual-time-budget=1000 --run-all-compositor-stages-before-draw data:text/html,\\\Test\\\ || echo "Chrome 테스트 완료" # 포트 노출 EXPOSE 8000 # 기본 명령어 (오버라이드 가능) CMD ["python", "--version"]