# 1. 기반 이미지 설정: 공식 Airflow 이미지를 사용합니다. # docker-compose.yaml의 AIRFLOW_IMAGE_NAME 환경 변수와 버전을 일치시키는 것이 좋습니다. # 예: apache/airflow:2.9.3 ARG AIRFLOW_VERSION=2.9.3 FROM apache/airflow:${AIRFLOW_VERSION} # 2. 루트 사용자로 전환 (시스템 패키지 설치 위함) USER root # 3. 필요한 시스템 유틸리티 및 Chrome 브라우저 설치 (Debian/Ubuntu 기반) # 공식 Airflow 이미지는 Debian 기반이므로 apt-get 사용 RUN apt-get update -yqq && \ apt-get install -yqq --no-install-recommends \ wget \ gnupg \ unzip \ # Chrome 실행에 필요한 라이브러리들 libglib2.0-0 libnss3 libgconf-2-4 libfontconfig1 libxi6 libgdk-pixbuf2.0-0 libgtk-3-0 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxrandr2 libxrender1 libxss1 libxtst6 libatk-bridge2.0-0 libatk1.0-0 libcups2 libdrm2 libgbm1 libpango-1.0-0 libcairo2 libasound2 && \ # Google Chrome 저장소 추가 및 설치 wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \ echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \ apt-get update -yqq && \ apt-get install -yqq google-chrome-stable && \ # 설치 후 불필요한 파일 정리 apt-get clean && \ rm -rf /var/lib/apt/lists/* # 4. ChromeDriver 설치 # 중요: 설치된 Google Chrome 버전에 맞는 ChromeDriver 버전을 사용해야 합니다. # Chrome 버전 확인: google-chrome-stable --version (컨테이너 빌드 중에는 어려우므로, 로컬에서 확인 후 버전 지정) # ChromeDriver 다운로드 URL: https://googlechromelabs.github.io/chrome-for-testing/ # 아래 ARG는 예시이며, 실제 Chrome 버전에 맞는 ChromeDriver 버전을 명시해야 합니다. ARG CHROME_DRIVER_VERSION="136.0.7103.92" # 예시: 2025년 5월 기준 최신 Stable과 유사한 버전 (실제 버전에 맞게 수정!) RUN wget -O /tmp/chromedriver.zip "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/${CHROME_DRIVER_VERSION}/linux64/chromedriver-linux64.zip" && \ unzip /tmp/chromedriver.zip -d /usr/local/bin/ && \ # 압축 해제 시 chromedriver-linux64 디렉토리 안에 chromedriver가 있을 수 있음 (mv /usr/local/bin/chromedriver-linux64/chromedriver /usr/local/bin/chromedriver || echo "chromedriver already in /usr/local/bin or mv failed") && \ rm -rf /tmp/chromedriver.zip /usr/local/bin/chromedriver-linux64 && \ chmod +x /usr/local/bin/chromedriver # (선택 사항) ChromeDriver 경로 환경 변수 설정 (코드에서 Airflow Variable을 사용하면 필수는 아님) # ENV CHROMEDRIVER_EXECUTABLE_PATH /usr/local/bin/chromedriver # 5. Airflow 사용자로 다시 전환 USER airflow # 6. requirements.txt 파일을 이미지 안으로 복사 # 이 Dockerfile과 같은 디렉토리에 requirements.txt 파일이 있다고 가정 COPY requirements.txt /requirements.txt # 7. requirements.txt에 명시된 Python 패키지 설치 RUN pip install --no-cache-dir -r /requirements.txt # 8. (선택 사항) 작업 디렉토리 설정 등 # WORKDIR /opt/airflow