Database 컨테이너 구축 (PostgreSQL)

Database 컨테이너 구축 (PostgreSQL)



소프트웨어 개발에 필수적인 데이터베이스 환경을 Windows 노트북에 구축합니다.

이번에는 PostgreSQL 환경을 구축합니다.

동기 부여


  • 개발용으로 PostgreSQL 환경을 노트 PC상에서 구축하고 싶다.
  • 포트, 유저, 스키마의 정의는 기동시에 자동적으로 설정해 주었으면 한다.

  • 절차



    환경


  • Windows 10 Pro
  • Docker Desktop for Windows

  • 구성 파일 만들기


  • 파일은 다음과 같은 디렉토리 구조로 배치됩니다.
  • {任意フォルダ}
     ├ docker-compose.yaml
     └ docker-entrypoint-initdb.d
       └ init.sh
    
  • docker-compose.yaml을 만듭니다.
  • version: '3'
    services:
    db:
    image: postgres:12-alpine
    container_name: db-container
    ports:
    - 5433:5432
    environment:
    POSTGRES_USER: admin
    POSTGRES_PASSWORD: admin
    volumes:
    - /C/Task/RedmineWorkHICT/#7212/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    
  • init.sh를 작성합니다.
  • set -e
    psql -U admin admin << EOSQL
    CREATE TABLE Users(
      account_id        SERIAL PRIMARY KEY,
      account_name      VARCHAR(20),
      email             VARCHAR(100),
      password    CHAR(64)
    );
    
    CREATE TABLE UserStatus(
      status            VARCHAR(20) PRIMARY KEY
    );
    EOSQL
    

    줄 바꿈 코드를 Linux에 정렬



    이번 환경은 Windows이므로 개행 코드에 의해 docker의 실행이 에러가 되는 경우가 있습니다.
    다음을 수행하여 줄 바꿈 코드를 Linux에 정렬합니다.

  • VSCode의 경우 : 오른쪽 하단의 줄 바꿈 코드 부분을 LF로 설정합니다.


  • Vim의 경우 : 다음 명령으로 CR 줄 바꿈 코드를 삭제합니다.
    :%s/^M//g
  • 오류가 있으면 다음 명령을 사용하여 컨테이너와 사용자 캐시를 삭제합니다.
  • docker-compose down -v
    docker-compose build --no-cache
    docker-compose up -
    

    시작 및 확인


  • 다음 명령으로 시작합니다.
  • docker-compose up -d
    
  • PostgreSQL 콘솔에 들어갑니다.
  • docker exec -it db-container bash
    psql -U admin
    
  • 적당하게 SQL문을 발행해 동작을 확인합니다.

  • 요약



    위의 절차를 통해 새로운 환경을 구축할 수 있었습니다.
  • docker-compose.yml에서 다음을 정의한다.
  • PostgresSQL 컨테이너 이미지
  • 사용자 및 암호
  • 포트

  • init.sh에서 스키마 정의를 자동으로 설정합니다.

  • 응용편


  • 데이터가 들어간 상태로 시작하고 싶은 경우에는 다음의 방법이 있습니다.
  • init.sh에 Insert 문도 기술한다. (소량 용)
  • 백업 데이터에서 복원합니다.
  • DB 데이터 디렉토리를 마운트합니다.

  • 좋은 웹페이지 즐겨찾기