지난 시간은 도커 컴포즈를 활용해 gcp vm에서 airflow webserver를 구동시키는 것 까지 진행했었다. 하지만 아직 환경 세팅이 끝나지 않았다. 컨테이너 내부에서 동작하는 각종 프로바이더들이 설치가 안되었기 때문에 operator들을 따로 설치해 주어야 한다.
https://github.com/apache/airflow/blob/constraints-2-3/constraints-3.8.txt
깃허브에 에어플로우 브랜치를 클릭하면 버전별로 constraintfile들을 제공해준다. raw file을 긁어와서 우리 txt 파일로 만들자.
버전을 잘 확인해야 한다. 나는 2.3.2 version의 airflow를 사용하고 있다.
curl https://raw.githubusercontent.com/apache/airflow/constraints-2-3/constraints-source-providers-3.8.txt >> /pugins/contraints.txt
그러면 해당 txt파일이 만들어 질 것이다.
2가지 방법을 이용해 우리는 환경을 세팅할 수 있다.
직접적으로 도커 컨테이너에 pip 하기
도커 이미지를 만든 후 그 이미지를 yaml 파일 기본 이미지로 사용해 다시 빌드하는 것이다.
우리는 첫번째 방법으로만 진행하려 한다.
docker exec c4003fda8ee9 pip install -r /opt/airflow/plugins/constraints.txt
이상한 숫자는 컨테이너 indentifer이다. 해당 컨테이너에 우리가 저장한 requirement를 받게 만들자.
해당 프로바이더들이 정상적으로 설치되었는지 확인해보자.
해당 dag를 임시로 시작해 보았다. 정상적으로 작동한다.
해당 프로세스는 직접 진행하지 않지만 방법을 아래와 같이 진행하면 된다.
DockerFile 생성 후 도커 허브에 공식 airflow 이미지 및 태그를 확인한 후
아래와 같이 도커파일을 생성해주자.
FROM apache/airflow:2.3.2-python3.8
COPY /plugins/requirements.txt /requirements.txt
RUN python3 -m pip install --user --upgrade pip
RUN python3 -m pip install --no-cache-dir --user -r /requirements.txt
그리고 이제 터미널에서 아래와 같은 명령어를 내린다.
docker build . --tag my_airflow:adjusted
아마 이미지가 하나 생성되었을 것이다.
그럼 이제 yaml 파일에 가서
이부분에 우리가 생성한 이미지를 바꿔치기 해주면 된다.
image: ${AIRFLOW_IMAGE_NAME:-my_airflow:adjusted}