[Prisma+PostgreSQL] Docker를 이용한 PostgreSQL 시작하기

Miseon (MIMI)·2024년 6월 10일
0

Prisma+PostgreSQL

목록 보기
1/2
post-thumbnail

🔖 개요

일반적인 PostgreSQL 환경 세팅 방법은 귀찮다.
Docker Hub에는 다양한 Image를 제공하고 있다.
PostgreSQL의 이미지 또한 당연히 존재하고 있으니, 이를 통해서 환경 세팅을 뚝딱 해보자.

🔖 Docker를 이용한 PostgreSQL 설치

📍 PostgreSQL Image 받아오기

Docker Hub에서는 다양한 버전의 PostgreSQL 이미지를 제공한다.
원하는 버전을 골라서 받아올 수 있지만,
일단 최신 버전을 사용하기로 한다. (:lastest 구문을 이용한다.)

$ docker pull postgres:latest

성공적으로 이미지를 받아온 것을 볼 수 있다.
image pull에 성공했는지 자세히 확인하고 싶다면 docker imagees 명령어를 이용한다.

📍 PostgreSQL Container 실행

이미지를 받아왔으니,
이를 이용하여 컨테이너를 생성하게 되면
PostgreSQL 환경 세팅을 완료할 수 있다.

  • PostgreSQL의 기본 port인 5423를 사용한다. (로컬의 5432로 동일하게 포트포워딩)
  • 시간 동기화
  • PostgreSQL 비밀번호 설정
  • 컨테이너 데이터 저장 경로 지정
$ docker run -p 5432:5432 --name test-postgres \
-e POSTGRES_USER=<ADMIN_NAME>
-e TZ=Asia/Seoul \
-e POSTGRES_PASSWORD=<ADMIN_PW> \
-v \home\testpostgres\pgdata \
-d postgres:latest

docker ps 명령어를 통해, 성공적으로 생성된 컨테이너를 확인할 수 있다.

--- mac, linux ...
docker exec -it test-postgres /bin/bash

--- windows (git bash의 경우)
winpty docker exec -it test-postgres sh

생성된 컨테이너의 ID를 확인하고, docker exec 명령어를 통해 컨테이너에 접속한다.
PostgreSQL 컨테이너 생성 및 실행, 접속까지 완료되었다.

🔖 PostgreSQL 기본 세팅

📍 계정 및 권한 관리

컨테이너 접속 후, 기본적인 PostgreSQL 세팅을 진행해보자.
다음 명령어를 통해 PostgreSQL에 접속할 수 있다.
psql 명령어만 사용할 경우, root name으로 접속된다.
아까 <ADMIN_NAME>에 입력한 name으로 접속해보자.

$ psql -U <ADMIN_NAME>

새로운 계정을 만들기 위해서는 다음과 같은 명령어를 실행한다.

create role <USER_NAME> with login password <PASSWORD>;

계정에는 권한을 부여할 수 있다.
예를 들어, 다음과 같이 2가지의 권한 설정이 가능하다.

  • DB 생성 : createdb
  • root 지정 : superuser
alter user <USER_NAME> with <ROLE>;

계정별로 지정된 권한은 \du 명령어를 통해 확인할 수 있다.

📍 Schema 생성

PostgreSQL의 특징으로는, Schema를 생성할 수 있다는 것이다.
하나의 DB에 하나의 Schema가 대응되는 개념이라고 볼 수 있다.
즉, DB = schema이지만, schema는 DB의 논리적인 개념이라고 생각된다.

public schema가 기본적으로 생성되어 있고,
table이 많아짐에 따라 여러 schema를 생성해서 관리하면 좋다.

다음 명령어를 통해 생성할 수 있다.

create schema <SCHEMA_NAME>;

특정 schema를 사용하고 싶을 땐 다음 명령어를 사용하면 된다.

set search_path to <SCHEMA_NAME>;

현재 사용 중인 schema는 다음 명령어를 통해 확인할 수 있다.

show search_path;

📍 DB 생성 및 접속(use)

다음 명령어를 통해 DB를 생성할 수 있다.
생성된 DB 목록은 \l 명령어를 통해 확인할 수 있고,
\connect <DB_NAME>; 또는 \c <DB_NAME>; 명령어를 통해 DB에 접속할 수 있다.

create database <DB_NAME>;

📍 table 생성

create table <TABLE_NAME>(column1 type1 serial primary key, column2 type2 ...);

위 명령어는 기본 schema인 public schema에 저장된다.
특정 schema에 table을 생성하고 싶다면,
<TABLE_NAME>이 아닌 <SCHEMA_NAME>.<TABLE_NAME>으로 작성해야 한다.

생성된 table 목록은 \dt 명령어를 통해 확인할 수 있다.

💡 serial 키워드

  • PostgreSQL에서 table을 생성할 때, 특정 컬럼을 serial로 지정하는 건 기존 MySQL에서의 auto-increment와 동일한 기능을 한다.
profile
방황하는 개발자

0개의 댓글