Skip to main content

1) DB Server Creation

Chapter Preview


목표

  1. Docker 를 이용하여 DB 서버를 생성합니다.
  2. 생성된 DB 의 role name 과 attributes 를 확인합니다.

스펙 명세서

  1. Docker 를 설치합니다.
  2. PostgreSQL DB 서버를 생성합니다.
    • Image : postgres:14.0
    • Container name : postgres-server
    • POSTGRES_USER : myuser
    • POSTGRES_PASSWORD : mypassword
    • POSTGRES_DB : mydatabase
    • Port forwarding : 5432:5432
  3. 생성된 DB 서버를 확인합니다.
    • psql 로 DB 에 접근하여 role name 과 attributes 확인
https://github.com/mlops-for-mle/mlops-for-mle/tree/main/part1

해당 파트의 전체 코드는 mlops-for-mle/part1/ 에서 확인할 수 있습니다.

part1
├── Dockerfile
├── Makefile
├── data_generator.py
├── data_insertion.py
├── data_insertion_loop.py
├── docker-compose.yaml
└── table_creator.py

1. Docker 설치

1.1 Docker Desktop

1.2 Docker Engine

  • Ubuntu 에서 desktop 형태가 아닌 engine 형태로 설치하고 싶을 경우, 아래의 방법을 통해 설치합니다.
    Install Docker Engine on Ubuntu

2. DB 서버 생성

docker run 명령어를 이용하면 간단한 옵션들을 통해 DB 서버를 생성할 수 있습니다.

docker run -d \
--name postgres-server \
-p 5432:5432 \
-e POSTGRES_USER=myuser \
-e POSTGRES_PASSWORD=mypassword \
-e POSTGRES_DB=mydatabase \
postgres:14.0
  • -d :
    • 컨테이너가 detached 모드로 실행하게 되며, -d 옵션 없이 실행했다면 해당 터미널에서 Ctrl + C 를 눌러서 빠져나오는 순간 해당 컨테이너는 종료됩니다.
  • --name :
    • 컨테이너의 이름을 지정합니다.
  • -p :
    • 컨테이너에서 외부로 노출할 포트 포워딩 (port forwarding) 을 설정합니다.
    • 형식은 host:container 으로 사용이 되며, 여기서는 5432:5432 로 설정하겠습니다.
  • -e : 필요한 환경 변수를 설정합니다.
    • POSTGRES_USER : 유저의 이름을 설정합니다.
    • POSTGRES_PASSWORD : 유저의 비밀번호를 설정합니다.
    • POSTGRES_DB : DB 의 이름을 설정합니다.
  • postgres:14.0 :
    • 사용할 이미지를 지정합니다.

docker ps 명령어를 통해 DB 서버가 잘 생성되었는지 확인합니다.

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13bd38add3e7 postgres:14.0 "docker-entrypoint.s…" 40 seconds ago Up 39 seconds 0.0.0.0:5432->5432/tcp postres-server

3. DB 서버 확인

3.1 psql 설치

PostgreSQL DB 서버를 확인할 때 사용하는 CLI 툴인 psql 설치합니다. 공식 홈페이지를 참고하여 본인의 환경에 맞게 설치합니다.

3.2 DB 서버 확인

psql 을 통해 생성된 PostgreSQL DB 서버로 접속합니다.

PGPASSWORD=mypassword psql -h localhost -p 5432 -U myuser -d mydatabase
  • PGPASSWORD= :
    • 접속할 유저의 비밀번호를 입력합니다.
  • -h :
    • 호스트를 지정합니다.
  • -p :
    • 포트를 지정합니다.
  • -U :
    • 접속할 유저의 이름을 입력합니다.
  • -d :
    • DB 의 이름을 입력합니다.

접속에 성공하면 다음과 같이 출력됩니다.

PGPASSWORD=mypassword psql -h localhost -p 5432 -U myuser -d mydatabase
psql (14.3, server 14.0 (Debian 14.0-1.pgdg110+1))
Type "help" for help.

mydatabase=#

\du 를 통해 DB 의 role name 과 attributes 을 확인합니다.

mydatabase=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
myuser | Superuser, Create role, Create DB, Replication, Bypass RLS | {}