• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

Docker 에서 airflow 사용시 질문드립니다

23.09.16 08:50 작성 23.09.16 09:00 수정 조회수 512

1

강의에서는 강사님께서 airflow standalone 을 사용하셨는데,

docker image로 airflow 서버 생성한 다음 postgres 서버와 연결하려고 하니 테스트 fail이 나고 DAG도 돌아가지 않는 것 같습니다. 혹시 docker image 상에서 DB connect 하는 방법 가이드 부탁가능하실까요?
Airflow - connection setting

DB connection info

답변 2

·

답변을 작성해보세요.

0

Hyunwoo Park님의 프로필

Hyunwoo Park

2023.11.18

docker내부에서 localhost의 db에 접근하시려면, host.docker.internal 를 쓰시면 됩니다~

0

안녕하세요 gogo91rla님,

 

좋은 질문입니다!

https://github.com/dimz119/learn-apache-airflow/blob/main/docker-compose.yaml#L60

요기 코드를 보시면 아시겠지만, airflow 안에서는 postgres로 접근 가능합니다.

https://github.com/dimz119/learn-apache-airflow/blob/main/docker-compose.yaml#L89

username과 password도 위에 있습니다.

 ~/ docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                             PORTS                    NAMES
5ccbd0b29de7   apache/airflow:2.6.2   "/usr/bin/dumb-init …"   13 minutes ago   Up 17 seconds (health: starting)   8080/tcp                 learn-apache-airflow-airflow-scheduler-1
45dbfab1cc67   apache/airflow:2.6.2   "/usr/bin/dumb-init …"   13 minutes ago   Up 17 seconds (health: starting)   8080/tcp                 learn-apache-airflow-airflow-worker-1
398a35c71e53   apache/airflow:2.6.2   "/usr/bin/dumb-init …"   13 minutes ago   Up 17 seconds (health: starting)   8080/tcp                 learn-apache-airflow-airflow-triggerer-1
7d04c2991435   apache/airflow:2.6.2   "/usr/bin/dumb-init …"   13 minutes ago   Up 17 seconds (health: starting)   0.0.0.0:8080->8080/tcp   learn-apache-airflow-airflow-webserver-1
2bef277a9d27   postgres:13            "docker-entrypoint.s…"   13 minutes ago   Up 33 seconds (healthy)            0.0.0.0:5432->5432/tcp   learn-apache-airflow-postgres-1
79610a762a93   redis:latest           "docker-entrypoint.s…"   13 minutes ago   Up 33 seconds (healthy)            6379/tcp                 learn-apache-airflow-redis-1
 ~/ docker exec -it 7d04c2991435 /bin/bash

airflow@7d04c2991435:/opt/airflow$ nc -vz postgres 5432
Connection to postgres (172.31.0.3) 5432 port [tcp/postgresql] succeeded!
airflow@7d04c2991435:/opt/airflow$

조만간 한번 만들어 보겠습니다 ㅎㅎ

참고로 여기에 sample_table 만드시고 하셔야 합니다

 

gogo91rla님의 프로필

gogo91rla

질문자

2023.09.16

답변 감사합니다. 

혹시 여기에 sample_table을 만든다는 말은 Docker Airflow에 이미 설치된 Postgres DB에 샘플테이플을 생성해야한다는 말씀이실까요? 강의에서는 Local 에서 Postgres DB를 설치해서 만드는 것 같은데 이경우 DB생성 위치가 다르다고 생각해야될까요?

그리고 Docker 이미지 위에 Airflow를 만든다고 하더라도 외부(여기서는 사용자 Local PC)에 생성된 DB에도 연결이 가능할 거 같은데, 이번 강의에서 의도하신 환경내에서 실습할 수 있으면 좋을 것 같습니다.

감사합니다 ㅎㅎ

네 db 생성 위치가 다릅니다. 그리고 다커 내부에서 밖에 있는 db에 접근하시려면 접근 가능한 도메인이어야 합니다. 랩탑에서 따로 돌린 티비에는 접근 불가능할 겁니다.