본문 바로가기

Minding's Programming/Airflow

[Airflow/Docker] Postgres 컨테이너 추가해 DB 접속하기

728x90
반응형

docker-compose.yaml 파일 수정해 Postgres 컨테이너 추가하기

 

먼저 docker-compose.yaml 파일을 열어 services 항목에 아래 내용을 추가한다.

services
  postgres_custom:
    image: postgres:13
    environment:
      POSTGRES_USER: minding
      POSTGRES_PASSWORD: minding
      POSTGRES_DB: minding
      TZ: Asia/Seoul
    volumes:
      - postgres-custom-db-volume:/var/lib/postgresql/data
    ports:
      - 5432:5432 # 외부에서 접속할 수 있도록 포트 노출

 

또한 postgres DB를 사용하기 위해서는 고정 IP를 할당해주어야 하는데, 컨테이너는 기본적으로 유동IP를 사용하기 때문에 networks 항목을 docker-compose.yaml 파일에 추가해 할당해줘야 한다.

 

networks를 따로 지정해주지 않은 컨테이너는 default network에 묶이게 된다. 따라서 동일 네트워크에 두고 싶은 컨테이너들은 동일한 networks 할당해주는 것이 필요하다.

 

그리고 volume에도 아래 내용을 추가해준다.

volumes:
  postgres-db-volume:
  postgres-custom-db-volume: # 추가한 내용

 

dafault network를 확인하는 방법

 

우선 아래 명령어를 통해 현재 실행 중인 아무 컨테이너의 ID를 알아낸다.

sudo docker ps

 

 

그리고 난 뒤 아래 명령어를 통해 해당 컨테이너의 상세정보를 출력한다.

sudo docker inspect 9fbbb4260ecb

>>>
...
                    "NetworkID": "c9a09a9ceaa375f69f42ac50279d9a596fbcf6b862b684deed1c86971697b2dd",
                    "EndpointID": "8f238071a3b857e286e2ac9431d5757929a351a4aa25bc79904721426a981300",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.4",
                    ...

그러면 하단에 NetworkID와 더불어 Gateway가 출력되는데, '172.18'까지가 현재 사용하고 있는 default network이다.

 

sudo docker network ls

>>>
NETWORK ID     NAME              DRIVER    SCOPE
1586c3177de2   bridge            bridge    local
4abc0b9b758d   host              host      local
c9a09a9ceaa3   minding_default   bridge    local
211b81f03766   none              null      local

위의 NetworkID와 default Network ID를 비교해보면 더 명확히 알 수 있다.

 

DBeaver 설치 및 접속 확인

https://dbeaver.io/download/

 

Download | DBeaver Community

Download DBeaver Community 24.1.3 Released on July 21th 2024 (Milestones). It is free and open source (license). Also you can get it from the GitHub mirror. System requirements. DBeaver PRO 24.1 Released on June 12th, 2024 PRO version website: dbeaver.com

dbeaver.io

DB에 접속하기 위한 툴로 DBeaver를 먼저 설치해준 뒤 실행한다.

 

PostgreSQL을 선택한다.

 

이후 위에서 수정한 docker-compose.yaml 파일 내용을 토대로 위 내용을 작성해준다.

 

Host는 기본적으로 WSL과 연동되어 있는 localhost를, 포트 번호는 위에서 설정한 5432 포트를 사용한다.

 

그리고 Database 이름과 Username, Password는 위에서 설정해준 대로 입력하면된다.

 

이후 왼쪽의 DB를 눌러 드라이버를 다운로드 받아준다.(최초 접속시에만)

 

이후 위 이미지처럼 하단 메뉴들이 잘 노출된다면 정상적으로 연결된 것이다.

728x90