본문 바로가기

카테고리 없음

[정리] docker-compose 활용 PostgreSQL 서버 간편설치!

Docker 라는 개념은 시스템 개발자나 운영자에게 부담을 덜어주는 아주 유용한 방식이다.

시스템에 필요한 기반 OS부터 환경변수, 패키지,라이브러리,네트워크설정 등을 모두를 하나의 컨테이너에 담아서 보관&배포&운영하는 개념, 익숙한 개념으로는 윈도우즈 설치 시 활용하는 iso이미지 처럼 필요한 것들을 미리 다 모아놓은 것과 같다.

하지만 Docker Container는 완벽하게 박스개념으로 포장을 잘 한 후, 여러개의 컨테이너화 된 시스템들을 동시 배포하고 업데이트하는 등 융통성을 극대화 시키는 개념이다.

Database 서버를 한개 구축하는 예를 들어 생각해보자.

일반적으로는 Linux OS가 설치된 서버에 Postgre를 설치하고, Configuration을 맞춘 후, 테이블생성하고, 네트워크 포트도 맞춰주어야 할것이다. 중간중간 에러들도 디버깅 하면서 이렇게 고생스럽게 완성된 서버가 갑자기 OS 내부적으로 패키지가 꼬인다거나, 하드웨어 드라이버가 문제가 생겼을때, 서버를 재구축해야한다고 생각한다면 막막하고 귀찮기 그지없다.

하지만 Docker를 이용하면, 직접 설치 완료 후 안정화 시스템을 컨테이너 이미지화 할 수도 있고, Dockerfile에 base OS부터 필요한 커멘드들을 작성하여 컨테이너자체에 융통성을 부여할 수도 있다. 이렇게 컨테이너화한 시스템들은 docker hub라는 클라우드플랫폼에 자유롭고, 손쉽게업&다운로드 할 수도 있다.($ docker pull&push 도커이미지명:태그)
몇개의 시스템이 동시에 실행되어야 할 경우는 docker-compose.yml 파일을 작성하여 동시 배포가 가능하다.

* Ubuntu18.04, docker 2 버전이 설치된 환경에서 하기 예제를 손쉽게 실행해 보자.

# 파일 생성 -> docker-compose.yml

version: '2'
services:
  postgres:
    image: postgres:10
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=password
    ports:
      - '5432:5432'
    volumes:
      - /mnt/postgres/data:/var/lib/postgresql/data
  pgadmin:
    image: dpage/pgadmin4
    container_name: pg_admin
    environment:
      - PGADMIN_DEFAULT_EMAIL=siner@pgadmin.com
      - PGADMIN_DEFAULT_PASSWORD=password
    ports:
      - '5555:80'
    volumes:
      - /mnt/pgadmin/data:/var/lib/pgadmin

# 도커 컴포즈 배포

# 컴포즈 컨테이너 동시 실행 ( -d : 백그라운드 실행)
$ docker-compose up -d
>>
Creating network "database_default" with the default driver
Creating pg_admin ... 
Creating postgres ... 
Creating postgres
Creating postgres ... done

# postgre 컨테이너 터미널진입
$ docker exec -it postgres /bin/bash

# postgre 계정진입 
$ su postgres

# postgre 진입 & DB 테이블생성 & 인덱스 생성
$ psql 
$ create table [table name]
$ create index [index name] on [table name]

방법만 안다면 5분안에 database 서버를 구축할 수 있다.