TOOL/Docker 2019. 12. 20. 12:04

PostgreSQL

1. Postgres Container 만들기

간단하게 PostgreSQL을 설치 할 수 있다.

  • Latest버전

    docker volume create pgdata
    docker run -d -p 5432:5432 --name postgres --restart always -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres postgres -c 'max_connections=300'
  • 9.2.23버전

    docker volume create pgdata-9.2.23
    docker run -d -p 5432:5432 --name postgres-9.2.23 --restart always -v pgdata-9.2.23:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres postgres:9.2.23 -c 'max_connections=300'
  • 설명

    • 예제는 Docker for WindowsLinux Container Mode에서 테스트되었다. (물론 Unix/Linux도 될 것이다.)
    • PostgreSQL의 기본 아이디는 postgres이다.
    • 초기암호는 POSTGRES_PASSWORD환경변수에 설정하여 변경할 수 있다. 아래는 postgres 이다.
    • volume을 생성하고 내부 저장되는 파일들을 매칭시켜서(-v pgdata:/var/lib/postgresql/data) 설정과 데이터를 보존한다.
    • --restart always를 통해서 Docker가 종료되었다가 다시 켜져도 Container가 실행된다.
    • -c max_connections=300로 최대접속세션수를 정할 수 있다. (IMAGE명 뒤에 적는다.)

2. Container의 Postgres로부터 DDL 추출

Host PC로 바로 DDL, DML, Dump파일들을 추출할 수 있습니다. (Powershell에서 테스트)

  • 특정 DDL만

      docker exec pgsql-9.2 su postgres -c "pg_dump --schema-only -t tablename1 postgres" > dump_file_name.sql
  • 여러 특정 DDL만

      docker exec pgsql-9.2 su postgres -c "pg_dump --schema-only -t tablename1 -t tablename2 -t tablename3 postgres" > dump_file_name.sql
  • 전체 DDL

      docker exec pgsql-9.2 su postgres -c "pg_dump --schema-only postgres " > dump_file_name.sql

3. Container의 Postgres로부터 DML 추출

  • 여러 특정 DML만 (데이터추출)

      docker exec pgsql-9.2 su postgres -c "pg_dump --column-inserts --data-only -t tablename1 -t tablename2 -t tablename3 postgres" > dump_file_name.sql