Infra/Linux-Ubuntu

[Docker] PostgreSQL 설치 실행

DuL2 2024. 2. 27. 22:00

Ubuntu 환경에서 docker에 PostgreSQL을 올리는 간단한 글입니다.

설치 환경 및 PostgreSQL 버전

  • Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-78-generic x86_64) 
  • Docker - Client: Docker Engine - Community
    • Version:    25.0.3
  • postgres:latest

PostgreSQL 설치!

docker run -d -p 5432:5432 -e POSTGRES_PASSWORD="<YourID@Passw0rd>" --name PostgreSQL01 postgres

#Volumn 설정
docker run -p 5432:5432 --name PostgreSQL01 -e POSTGRES_PASSWORD=1111 -d -v postgresql_data:/var/lib/postgresql/data postgres
  • docker: docker 실행
  • run: image 실행 명령어(만약 존재하는 image가 없다면 알아서 pull 해온다.)
  • -d: -it 옵션과 달리 detached 모드로 실행한다. 즉, 백그라운드 실행
  • -p 5432:5432 : port의 약자 옵션, 해당 container의 port forwarding 설정을 위한 옵션이다. inbound/outbound port를 각 각 5432로 설정한다.
  • -e : container 내부의 변수를 설정
    • POSTGRES_PASSWORD=”암호” : PostgreSQL 내부에서 사용할 ROOT 암호를 설정. 따옴표 내의 내용은 암호를 넣는다.
  • –name PostgreSQL01 : container의 이름을 PostgreSQL01로 설정.

본인은 현재 프로젝트를 위한 DB로 생성.

 

컨테이너 상태 진입

 

PostgreSQL 컨테이너 진입

아래 명령어를 입력하면 root 계정으로 진입 가능하다.

sudo docker exec --user="root" -it PostgreSQL01 "bash"

server에서 docker container 내부로 진입한 모습

PostgreSQL 실행

위에서는 컨테이너를 진입했을 뿐 실제 db가 동작하고 있는 것은 아니기 때문에 실행을 해준다.

psql -U postgres

PostgreSQL DB 생성

이제 PostgreSQL 내부에 어떤 DB가 존재하는 지 확인해보자.

SELECT datname FROM pg_database; -- 전체 데이터베이스 이름 출력
SELECT datname FROM pg_database WHERE datistemplate = false; -- 사용자가 생성한 데이터베이스 이름만 출력

 

 

실제 DB 생성해보기

CREATE DATABASE [DB이름];

#본인이 사용한 SQL문
CREATE DATABASE zziriritDB;

 

 세미콜론(;)을 주의해서 붙여주자. 그렇지 않으면 다음 줄까지 SQL문으로 받아들인다.

zziriritdb가 생성된 것을 확인할 수 있다.

 

DB 스키마 확인하기

SELECT nspname FROM pg_catalog.pg_namespace;

 

사용할 DB 변경하기

새로 만든 DB에서 작업을 하고 싶다면 다음 명령어로 DB를 변경해주어야 한다.

\c db이름

\c postgresql
\c zziriritdb

zziriritdb로 변경이 된 것을 확인할 수 있다.

 

SELECT * FROM PG_TABLES; -- PostgreSQL 내 모든 테이블 이름 조회
SELECT * FROM PG_TABLES WHERE schemaname='public'; -- 사용자가 생성한 테이블 이름 조회
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name; -- 사용자가 생성한 테이블의 이름 정보만 조회

 

DB에서 테이블을 작업하기

 이제 이 상태에서 테이블 create 문과 insert 문 등을 사용하여 작업을 진행하면된다.

 

PostgreSQL에서 빠져나오기

간단하다. 다음 명령어 입력!

\q

 

이제 컨테이너로 나오게 되었다.

 

DB 관리를 위한 GUI 툴 사용해보기

본인이 아는 DB 관리 툴은 DBeaver가 있고 찾아보니 PostgreSQL은 pgAdmin이라는 툴을 사용하여 관리를 쉽게할 수 있는 듯하다.

 개인 취향인듯하니 선택해서 사용해보자.

 

pgAdmin 공식 홈페이지

 

pgAdmin - PostgreSQL Tools

 

www.pgadmin.org

 

정리

오늘은 Docker에 PostgreSQL을 올려 프로젝트 기간동안 사용할 DB를 구축해보았습니다. 이외에도 AWS RDS를 사용하는 것도 좋은 방법인듯 하나 많은 데이터를 넣거나 테스트시 과도한 비용이 청구될 수 있어 local에 docker로 한 번 올려보았으니 관심있으신 분은 따라해보시면 좋을 듯 합니다. :) 

그럼 다음 글에서 뵙겠습니다.

'Infra > Linux-Ubuntu' 카테고리의 다른 글

[OS/Ubuntu22] Docker 환경 세팅  (0) 2024.02.26
[OS/Ubuntu22] 새 계정 생성하기  (0) 2024.02.25