sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.8
[추가 파이썬 패키지]
pip install apache-airflow
pip install boto3
mysql관련 패키지 설치시 사전 작업 :
sudo apt install default-libmysqlclient-dev pkg-config -y
pip install apache-airflow-providers-mysql
pip installapache-airflow-providers-oracle
pip install pandas
sudo timedatectl set-timezone Asia/Seoul
[우분투 시스템 패키지 업데이트]
sudo apt-get update
[필수 패키지 설치]
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
[Docker 공식 GPG키 추가]
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
[Docker 공식 apt 저장소 추가]
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
[Docker 설치]
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o /usr/bin/docker-compose && sudo chmod 755 /usr/bin/docker-compose && docker-compose --version
[설치 후 확인]
sudo systemctl status docker
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker
sudo groupadd docker
sudo usermod -aG docker $USER
[적용된 유저 바로 적용]
newgrp docker
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.2/docker-compose.yaml'
[Airflow 부팅을 위한 DB 준비 (postgre, redis)]
sudo docker-compose up airflow-init
[Airflow 실행]
sudo docker-compose up -d
pip 패키지 관리를 위하여 requirements.txt 생성
custom 이미지 생성을 위하여 Dockerfile 세팅 (Docker-compose 내의 image → build: . 로 변경)
- airflow.cfg 연동
docker-compose.yaml 파일 내 volumes 부분 수정
폴더별 맵핑 폴더 지정 및 airflow.cfg 파일 마운트
- default_timezone 변경 : utc → Asia/Seoul
- airflow 구동 시 웹서버상의 시간 조정 (DAG에는 적용 안됨, 따로 적용해야함)
- load_examples 변경 : True → False
- airflow 내부 샘플 DAGS를 보여주지 않도록 조정
- dag_dir_list_interval 변경 : 300 → 60
- 로컬에서 변경된 Dag 파일을 불러오는 시간 조정 5분 → 1분
from datetime import datetime
import pendulum
local_tz = pendulum.timezone("Asia/Seoul")
default_args = {
...,
"start_date": datetime(2022,6,7, tzinfo=local_tz),
...
}