학습주제
학습내용
https://github.com/keeyong/airflow-setup/blob/main/docs/Airflow%20Docker%20Local%20Setup.md
pull 안하고 up만 해도 됨. 알아서 pull 해주기 때문.
몇개의 도커 컨네이터는 init이 있음. 이게 끝나고 다수 컨테이너 실행됨.
탑레벨로 보면 버전이 있음.
약간 옜날 syntax docker-compose 1.27버전 이후엔 없어도 됨.
네트웍스가 없음. 한 네트워크에 들어가 있다는 의미.
x-airflow-common 야멀에서 반복되는 configuration있을 때, 앵커라고 해서, 특정 야멀 블럭을 별칭형태로 만들어서, 쉽게 반복할 수 있게 함.
베이스 이지 지정, 환경변수, depends on도 정의되어 있음.
posgres,redis는 적용 안됨.
posgres는 볼륨 하나 붙임.
모든 컨테이너에 공통 세팅 뒤에서 어떻게 계승되어 사용되고 있는지 확인.
최상위 키로 x-airflow-common에 대한 별칭으로 &airflow-common을 붙임. 이걸로 나중에 호칭하겠다는 뜻
공통이미지는 도커 허브에서 가져옴.
환경보면
여러 변수들이 있음.
이 환경도 별칭을 붙여서 이거만 따로 쓸 수 있음.
depends-on도 별칭을 붙임.
나중에 저걸 반복하지 않아도 됨.
컨테이너들은 호스트 볼륨을 사용
3개의 볼륨을 공유하고 있음.
앞에는 야멀파일이 있는 폴더
_PIP_ADDITIONAL_REQUIREMENTS
파이썬 관련 설치 모듈 뒤에 적어주면 됨.
태스크 개발하다보면 파이썬 모듈 설치해야하는 경우 있음. 메뉴얼하게 특정 컨테이너 안에 들어가서 설치할 수도 있지만, 어느 시스템에서 실행하냐에 따라 한 컨테이너 뿐만 아니라, 모든 컨테이너에서 설치해야 하는 경우 많음.
그러나 컨테이너 down 하고 다시 up 하면 다시 설치해야함.
보면 문법이 익숙지 않다
<<: *airflow-common
아까 말한 별칭을 이런형태로 써주면 내가 정의했던 내용들이 반복이 됨. 뒤에 command: 해당되는 명렁이 원래는 Dockerfile에 있지만 scheduler로 오버라이드 함
헬스체크도 다시 정의됨.
depends-on도 앞에 정의된걸 별칭으로 가져온 걸 볼 수 있음. 거기에 airflow-init을 추가함. 의존이 3개. init은 컨테이너들이 돌기위해 도커 엔진 리소스들이 충분한지 확인하는 절차.
condition의 경우 수행이 완벽이 되었을 경우 실행 가능.
이렇게 별칭이라는 형태로 계승하는 형태로 가는 것을 알 수 있음. 맥스님도 그때그때마다 찾아서 하는 것임. 일단 대충 알고 시작하고, 필요할 때마다 계속 개선하는 것임.
에어플로우 관련된 기본 설치 환경에 넣어주면 됨. _PIP_ADDITIONAL_REQUIREMENTS
주의. 쉼표로 구분하는게 하니라 공백으로 구분함. 그냥 모듈 넣어도 구동은 함.
컨테이너가 실행중이라면 down, up 하면 반영이 됨.