본문으로 건너뛰기

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 | {}