La foret rouge
Published on

Docker Compose로 PostgreSQL 구성하기

Authors
  • avatar
    Name
    신주용

도커 컴포즈를 이용해 PostgreSQL 서버를 구성해봅니다.

  1. docker-compose.yml 파일 생성

    PostgreSQL
    • #5: postgres 도커 공식 이미지1를 사용합니다. image: image_name:tag에서 태그 버전을 명시하지 않으면 latest 버전 이미지를 가져옵니다.
    • #7: [외부 포트]:[컨테이너 내부 포트] 형식으로 포트를 매핑합니다.
      • DB 데이터는 중요한 자산입니다. 방화벽, 게이트웨이 등 다른 조치를 취하는 것이 보안적으로 좋지만 이 글의 범위를 벗어나므로 여기서는 간단히 기본 포트 대신 다른 포트로 변경하여 사용합니다. 아니 그럴거면 일단 비밀번호부터 바꾸지
    • #9-11: 환경 변수를 설정합니다.
    • #13: 컨테이너를 초기화할 때 사용합니다. [외부 경로]:[내부 경로] 형식입니다.
  2. 컨테이너 생성 시 실행할 SQL 설정

    컴포즈 파일의 #13 줄을 조금 더 자세히 봅시다.

    • 도커는 컨테이너가 최초 실행될 때 한 번, /docker-entrypoint-initdb.d/ 폴더 안에 있는 *.sql, *.sql.gz, *.sh 파일을 실행합니다. 그러므로 초기화 코드를 만들고, 그 파일 또는 폴더를 컨테이너 내부의 /docker-entrypoint-initdb.d/ 폴더에 넣어서 원하는 대로 초기화를 할 수 있습니다.
    PostgreSQL
    • init.sql 파일을 이렇게 만들어 봤습니다. 이제 postgres 컨테이너를 처음 만들 때 이 sql이 실행될 것입니다. 그러면 테이블이 생성되고, 홍길동이라는 이름을 가진 행이 추가될 것입니다. 그런데 제대로 생성되었는지 어떻게 확인할까요?
  3. pgAdmin 사용법

    pgAdmin이라는 PostgreSQL 전용 오픈 소스 관리 툴이 있습니다. 이 툴도 역시 도커를 사용해 구축할 수 있습니다. pgAdmin 공식 문서2를 보고 따라해 봅시다. yml 파일 예시는 본문 상단의 docker-compose.yml 파일 #16~24 줄을 참고합니다.

    • #17: 이미지는 dpage/pgadmin43를 사용합니다.

    • #19: pgAdmin은 기본적으로 80번 포트를 사용하는데, 편의상, 보안상 외부 포트를 바꿔서 사용하기 위해 포트 매핑을 해줍니다.

    • #21, 22: pgAdmin에서 사용 가능한 환경 변수 중 이메일과 비밀번호는 필수 항목입니다.

    1. docker-compose up -d --build 명령어로 실행한 후, http://localhost:54330 으로 접속해봅니다. 환경 변수로 설정한 이메일과 비밀번호를 입력하면 됩니다.

      PostgreSQL
    2. 새 서버 추가를 선택합니다.

      PostgreSQL
    3. 서버 이름을 입력합니다. pgadmin에 보일 이름이므로 원하는 이름 입력하면 됩니다.

      PostgreSQL
    4. 연결 설정에는 docker-compose.yml 파일에 입력했던 내용을 사용합니다.

      • 호스트 이름에는 #4 줄에 입력한 서비스 이름을 입력합니다.
      • 포트 번호는 #7 줄의 내부 포트를 입력합니다.
      • 접속 데이터 베이스는 #11, 사용자 이름은 #9, 비밀번호는 #10을 입력합니다.
      • 입력 후 아래 '저장' 버튼을 누르면 됩니다.
      PostgreSQL
    5. 연결 된 후, 왼쪽 탐색기에서 Servers > [서버 이름] > 데이터베이스 > [데이터베이스 이름] > 스키마 > public > 테이블 > [테이블 이름]을 선택합니다. (이 구조는 조금 다를 수 있습니다.)

      선택한 후 '탐색기'와 '대시보드' 사이의 네 아이콘 중 왼쪽에서 두 번째 'View Data' 버튼을 누르면 해당 테이블의 내용이 보입니다. '홍길동'도 잘 들어가 있는 것을 볼 수 있습니다.

      PostgreSQL

전체 소스코드는 GitHub repository에서 확인할 수 있습니다.

Footnotes

  1. "postgres". hub.docker.com. https://hub.docker.com/_/postgres (accessed Mar. 7, 2021).

  2. "Container Deployment". www.pgadmin.org. https://www.pgadmin.org/docs/pgadmin4/5.0/container_deployment.html (accessed Mar. 7, 2021).

  3. "dpage/pgadmin4". hub.docker.com. https://hub.docker.com/r/dpage/pgadmin4/ (accessed Mar. 7, 2021).