반응형
회사에서 airflow를 도입했는데
도커 오퍼레이터를 쓰는게 그렇게 쉽지는 않아서
지금 도커 허브에 올라온게 2.5 버전이 올라 왔고
문서는 3.4 버전이 stable이라
이글을 볼 때 지금 설치 버전과 문서 버전을 꼭 확인해 보라!
sudo chmod 666 /var/run/docker.sock
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.docker_operator import DockerOperator
from airflow.operators.python_operator import BranchPythonOperator
from airflow.operators.dummy_operator import DummyOperator
from docker.types import Mount
default_args = {
'owner' : 'airflow',
'description' : 'Use of the DockerOperator',
'depend_on_past' : False,
'start_date' : datetime(2021, 5, 1),
'email_on_failure' : False,
'email_on_retry' : False,
'retries' : 1,
'retry_delay' : timedelta(minutes=5)
}
with DAG('himari2', default_args=default_args, schedule_interval="0 */4 * * *", catchup=False) as dag:
start_dag = DummyOperator(
task_id='start_dag'
)
end_dag = DummyOperator(
task_id='end_dag'
)
t1 = BashOperator(
task_id='print_current_date',
bash_command='date'
)
t2 = DockerOperator(
task_id='himari_collector',
image='centos:latest',
api_version='auto',
auto_remove=True,
docker_url="unix://var/run/docker.sock",
network_mode="host",
environment={'ENVIRONMENT':'linux'},
mount_tmp_dir=False,
mounts=[
Mount(source='/home/mx/docker/airflow/var/pos',
target='/var/pos',
type='bind'),
Mount(source='/home/mx/docker/airflow/var/data',
target='/var/data',
type='bind'),
],
)
t4 = BashOperator(
task_id='print_hello',
bash_command='echo "hello world"'
)
start_dag >> t1
t1 >> t2 >> t4
t4 >> end_dag
'프로그래밍' 카테고리의 다른 글
무료 다이어그램 사이트 (0) | 2023.02.17 |
---|---|
블루아카이브 1위 (0) | 2023.01.25 |
Airflow (1) | 2023.01.06 |
blazor ui 컨포넌트 (0) | 2023.01.03 |
wsl2 고정 ip처럼 사용하기 (0) | 2022.12.06 |