Docker로 postgreSQL Database 설치하기

Updated:

postgreSQL은 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 기능과 성능이 뛰어나다는 평가를 받고 있는 오픈소스 DBMS다. 오픈 소스이지만 뛰어난 성능을 가지고 있기 때문에 이를 기반으로한 상용 제품도 출시된 바 있다.

작은 규모의 프로젝트에서는 SQLite3를 사용하면 되고, 규모가 커진다 싶으면 postgreSQL을 사용하면 좋다. 오픈 소스이므로 비용적인 부담도 없다. 여기서는 도커 컨테이너를 사욯해서 postgreSQL을 간단히 구동하는 방법을 알아본다.

1. 도커 설치 필요

도커를 사용해야 하므로 도커는 기본 설치가 되어야 한다. 도커 설치는 이미 되어있다고 가정한다. 설치가 안되어 있으면 도커 사이트를 방문해서 설치를 하고 돌아오자.

2. postgreSQL 컨테이너 실행

아래 도커 명령어 실행으로 postgreSQL 컨테이너 실행을 할 수 있다. postgreSQL 컨테이너 실행이 되면 DB를 사용할 준비가 끝난다. 아래 옵션에 대한 추가 설명을 남긴다.

$ docker run --name postgres-container -d --restart unless-stopped \
  -p 5432:5432 -e POSTGRES_PASSWORD=123456 \
  -v ${PWD}/data:/var/lib/postgresql/data postgres:13.3

주요 옵션 항목에 대한 설명이다.

  1. –name postgres-container : 컨테이너 이름 지정.
  2. –restart unless-stopped : 따로 stop 명령을 보내지 않으면 컨테이너 재시작의 경우에도 자동 실행됨.
  3. -p 5432:5432 : postgreSQL이 사용할 포트 번호 기재
  4. -e POSTGRES_PASSWORD=123456 : postgreSQL DB에 대한 비밀번호 설정.
  5. -v 볼륨 정보 : 컨테이너가 사용할 볼륨 정보 기재.
  6. postgres:13.3 : 실행할 postgreSQL 컨테이너 버전.

3. postgreSQL 구동 확인

postgreSQL 구동 상태를 보기위해서 아래처럼 로그를 출력해볼 수 있다.

$ docker logs postgres-container

추가로, postgreSQL의 관리하는 위한 툴인 pdAdmin을 사용하면 더 편하게 매니지가 가능하다.

4. postgreSQL 컨테이너의 bash 접속

아래와같이 컨테이너 이름을 사용해서 컨테이너 내부의 bash에 접속할 수 있다. DB 상태를 확인하거나 설정이 필요할 때 유용하게 사용된다.

$ docker exec -it postgres-container bash

2번 항목의 명령어를 실행하면 postgreSQL 컨테이너가 구동되고 내부를 보면 기본 database가 postgres 이름으로 존재한다. 이것 외에 추가로 database를 추가하려면 아래처럼 실행해보자. 설치한 PostgreSQL에 접속해서 새로운 데이타베이스 newdb를 만든다.

root@2292f7b1cb18:/# psql -U postgres
psql (10.3 (Debian 10.3-1.pgdg90+1))
Type "help" for help.
postgres=# CREATE DATABASE newdb;
CREATE DATABASE
postgres=#\q

5. postgreSQL DB URL 설정

postgreSQL 구동은 완료하였고 외부에서 DB를 연결하는 방법을 해보자. Flask 등 외부 어플리케이션에서 입력할 DB URL을 구성하는 방법이다.

위에서 실행한 컨테이너의 경우는 아래의 같이 입력하면 연결된다.

export DATABASE_URL='postgresql://postgres:123456@localhost:5432/postgres'

각 항목은 아래와같은 형식이니 본인의 환경에 맞춰서 변경해주면 된다.

“postgresql://postgres(아이디):123456(비번)@localhost(IP주소):5432(포트)/postgres(database이름)”



Leave a comment