[PostgreSQL] pgAdmin Docker 로 실행 후, Login Sessing 유지하는 방법

개요

  • PostgreSQL 을 Docker Container 로 실행 한 후 GUI 도구인 pgAdmin 또한 Docker Container 로 실행한 후, DB 에 접속합니다.
  • 하지만, 위 상황에서 Docker 컨테이너가 종류 후 다시 pgAdmin Container 를 실행하게 되면 Login Session 이 없어지고 다시 접속을 해야하는 번거로움? 이 있습니다.
  • Docker Container 가 종료 되고 삭제 되더라도 Login Session 유지 되도록 Docker-Compose 수정 합니다.

기존 Docker-Compose 파일 내용

  • 기존 Docker-Compose 파일 내용은 다음과 같습니다.
  • 간단히 설명은 드리면, 크게 postgreSQL, pgAdmin 2개의 서비스를 Docker Compose 로 구현해 놓은 상태입니다.
  • 위 디렉터리에서 명령어로 docker-compose up 을 입력하게 되면 Docker Compose 가 실행 되면서 PostgreSQL, pgAdmin 모두 실행되는 것을 확인할 수 있습니다.
version: '3.4'

services:
  postgres:
    image: postgres
    container_name: postgres
    restart: always
    environment:
      - POSTGRES_USER=test
      - POSTGRES_PASSWORD=system
      - POSTGRES_DB=abc
    ports:
      - '5432:5432'
    volumes:
      - D:/postgresql/data/:/docker-entrypoint-initdb.d/
      - D:/postgresql/data/:/var/lib/postgresql/data

  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4
    restart: always
    ports:
      - 8088:80
    environment:
      - PGADMIN_DEFAULT_EMAIL=test@mail.com
      - PGADMIN_DEFAULT_PASSWORD=system

Docker Compose 실행 모습

  • 실행 결과, Docker Compose 정상 실행 된 것을 확인할 수 있습니다.


pgAdmin 접속하기

  • Docker Container 로 실행한 pgAdmin 에 접속하려면 본인IP:포트번호 로 접속 할 수 있습니다.
  • 저 같은 경우에는 localhost:8088 을 브라우저에 입력하여 pgAdmin 에 접속하였습니다.

pgAdmin 접속 화면

  • pgAdmin 접속을 하게 되면, 다음 화면이 나오게 됩니다.
  • 해당 화면에서 자신의 로그인 정보를 입력하여 접속하면 됩니다.

로그인 화면


메인 화면


새 Server 등록

  • 접속을 완료 하였다면, Dashboard -> Add New Server 메뉴를 선택 후 새로운 서버를 등록합니다.
  • 저는 TestDatabase 이름으로 서버를 등록하였습니다.
  • 아래와 같이 TestDatabase 이름으로 새로운 Server 가 등록된 것을 확인할 수 있습니다.


Container 종료 및 다시 시작

  • 이제 PostgreSQL, pgAdmin 2개의 Docker Container 를 모두 종료합니다.
  • 그리고 다시 Docker-Compose 를 재시작 합니다.
> docker-compose stop
> docker-compose up

pgAdmin 재 접속

  • Docker-Compose 를 재 시작 하였다면, 다시 pgAdmin 에 접속하여 앞서 생성한 TestDatabase 서버 접속 Session 이 유지 되는지 확인합니다.
  • 확인 결과, 서버 접속 정보가 유지되지 않고 초기화 된 것을 확인할 수 있습니다.


pgAdmin Docker-Compose 수정

  • 앞서 pgAdmin 에서 재접속을 했을 경우, 서버 정보가 유지되지 않고 초기화 되는 것을 확인하였습니다.
  • Docker Container 가 종료되더라도, 접속 정보를 유지하고 싶다면 볼륨 마운트를 하여 접속 정보를 기록하고 저장해 두어야 합니다.
  • 때문에, pgAdmin Docker-Compose 내용에 D:/postgresql/pgAdmin/:/var/lib/pgadmin 이와 같이 /var/lib/pgadmin 디렉터리를 본인 로컬에 볼륨 마운트를 진행해야 합니다.
  • 수정된 Docker-Compose 내용은 다음과 같습니다.
version: '3.4'

services:
  postgres:
    image: postgres
    container_name: postgres
    restart: always
    environment:
      - POSTGRES_USER=test
      - POSTGRES_PASSWORD=system
      - POSTGRES_DB=abc 
    ports:
      - '5432:5432'
    volumes:
      - D:/postgresql/data/:/docker-entrypoint-initdb.d/
      - D:/postgresql/data/:/var/lib/postgresql/data

  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4
    restart: always
    ports:
      - 8088:80
    environment:
      - PGADMIN_DEFAULT_EMAIL=test@mail.com
      - PGADMIN_DEFAULT_PASSWORD=system
    volumes:
      - D:/postgresql/pgAdmin/:/var/lib/pgadmin

/var/lib/pgadmin 볼륨 마운트 확인

  • 저 같은 경우에는 /var/lib/pgadmin 경로를 제 로컬 경로인 D:/postgresql/pgAdmin 디렉터리에 마운트 되도록 지정하였습니다.
  • 이제 Docker-Compose 를 실행하게 되면, D:/postgresql/pgAdmin 경로에 다음과 같은 내용들이 볼륨 마운트 된 것을 확인할 수 있습니다.


재접속 후, Server Session 유지 확인

  • Docker Container 종료 후, 다시 pgAdmin 으로 접속 시 서버 Session 이 유지되는 것을 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY