56 lines
3.2 KiB
Docker
56 lines
3.2 KiB
Docker
# 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
|