## 들어가기 Airflow에서 python operator로 회사 내부 패키지를 사용하려면 이미지 빌드 단계에서 패키지 설치를 하도록 해야 한다. 빌드한 다음 컨테이너 bash에서 패키지를 까는 방식은 비효율적이고, 복수의 컨테이너가 생성되는 airflow와 맞지 않다. 보통 이런 경우 dockerfile이나 docker-compose 파일을 수정하지만, airflow는 docker-compose 파일 내부에 기본 설정이 많아서 수정하기 좀 그렇다. 고민하던 차에 인터넷에서 좋은 방법을 찾아 적용해보기로 했다. 바로 커스텀 이미지를 생성하고, docker-compose 파일에서 베이스 이미지 부분만 수정하는 방법이다. ([출처](https://stackoverflow.com/questions/67887138/how-to-install-packages-in-airflow-docker-compose)) ## Airflow 커스텀 이미지 ```yaml FROM apache/airflow:2.9.2 WORKDIR /usr/src/app COPY .env . # 환경 변수 설정 RUN export $(cat .env | xargs) # Github private repo에서 패키지 다운로드 및 설치 RUN pip install --user --upgrade pip RUN pip install --no-cache-dir --user -r RUN pip install --upgrade pip RUN pip install git+https://${GITHUB_TOKEN}@github.com/[유저 이름]/[리포지터리].git ``` - 추가한 설정은 두 가지이다. 하나는 환경 변수 설정이고 나머지 하나는 github private repo에서 패키지를 다운로드 받는 것이다. - 환경 변수 설정은 API 접속 정보 설정을 위해 필요하다. 근데 지금 생각해보니 이 환경 변수 설정도 git으로 받아오는 게 좋아보인다.