홍카나의 공부방

[Airflow] 컨테이너 고정IP 할당 & PostgresDB 확인 본문

Data Engineering/Airflow

[Airflow] 컨테이너 고정IP 할당 & PostgresDB 확인

홍문관카페나무 2023. 12. 17. 01:02

 

1. 컨테이너의 IP

 

docker container들은 기본적으로 유동 IP를 가지고 있다.

즉, 컨테이너 재기동시 IP가 바뀔 수 있다는 것이다.

그래서 고정 IP를 할당하려면 networks 만들어서 할당해야 한다.

 

Airflow를 구성할 때 postgresDB에 고정IP를 할당시켜서 DB에 접속하는 경우를 살펴보자.

 

먼저 airflow가 만드는 여러 기본적인 container들이 있는데

이 컨테이너들은 네트워크 지정이 되어있지 않다.

그러면 default network에 모두 소속된다.

 

그런데 docker에서

컨테이너 간의 네트워크가 다르면 통신할 수 없다!

 

따라서 동일 네트워크로 할당하는 과정이 필요하다.

 

 

 

2. docker-compose.yaml 파일 수정하기

 

docker-compose.yaml 파일로 들어가서 networks를 먼저 설정해보자.

 

volumes:
  postgres-TOBE-db-volume:
  postgres-db-volume:
  pgadmindata:


networks:
  network_new:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.47.0.0/16
          gateway: 172.47.0.1

 

 

맨 아래 volumes 부분 밑에

networks:를 추가하여 위와 같이 작성하였다.

새로 만든 네트웤에는 'network_new'라는 이름을 주었고,

subnet은 172.47.0.0/16으로 주었다.

Host address가 16개, Network address는 16개라는 뜻이고

게이트웨이는 172.47.0.1로 주었다.

 

위 서브넷 주소는 디폴트 네트워크가 쓰지 않고 있는 대역대를 부여해야 한다!

나는 172.47.0.0 대역을 기존에 사용하지 않았기에 부여해줬다.

 

이후 컨테이너들에 하나하나씩 주소를 할당해주면 된다.

docker-compose.yaml

 

그리고 airflow가 MetaDB로 사용하고 있는 postgres가 아닌

새로운 postgres 서비스를

postgres_TOBE라는 이름을 붙여서 하나 추가해줬다.

 

그리고 다른 모든 컨테이너에 ipv4_address 값을 부여해서 네트워크를 묶어줬다.

(ex : 172.47.0.4, 172.47.0.5, ... )

 


 

3. docker-compose up

 

이후 docker-compose up 명령어로 컨테이너를 뛰워주면 된다.

 

 

 

 

4. DB확인하기

 

DBeaver라는 프로그램을 이용하여 PostgresDB에 들어가보겠다.

 

 

 

DBeaver 설정은 위와 같다.

Host는 우선 localhost로 냅둬도 된다.

localhost는 WSL과 기본적으로 연결되어 있기 때문이다.

그래서 localhost로 두면 WSL에 들어가겠다는 말과 같다.

 

Database, Username, Password는 docker-compose.yaml에서

새로운 Postgres 컨테이너에 입력한 그대로 입력해주면 된다!

 

airflow metaDB로 사용하는 postgresDB는 5431번 포트를 열었으니

5431번으로 설정해서 새로운 연결을 만들어주면 되고

그리고 ID PW DB도 그에 맞춰 연결하면 된다.

반응형