[Postgres] Window에 PostgresSQL 직접설치/Docker로 설치

hugingstar·2025년 12월 4일

DevOps

목록 보기
11/14
post-thumbnail

이번 글에서는 호스트 컴퓨터에 PostgresSQL을 다운로드 하고, Docker

1. 호스트 컴퓨터에 설치하기

원하는 버전 정보 확인해서 넣기, 여디서는 윈도우에서 설치하므로 Window 전용 파일을 다운로드 한다.

https://www.postgresql.org/

  • "Download the installer" 버튼을 눌러서 다운로드 한다.
  • 여기서는 17.7 윈도우 버전 다운로드 하였다. 너무 최신버전하면 어떤 문제가 나올지 모르니까 17.7로 선택해서 해본다.(이미 있는 Application의 호환성을 가장 첫번째로 고려하는 것이 좋다.)

  • 패키지 확인해서 필요한 것만 남기고 다운로드 한다. (처음 설치할 때 다 설치하는 것이 나중에 속 편하다.)

  • 비밀번호, 포트번호는 Default로 설정하고 Install 진행한다.

  • Stack builder 해제하고 설치한다.

  • pgAdmin 4 켜면 잘 돌아가는 것을 볼 수 있다.

2. Docker로 Postgres 구축하기

  • 컨테이너에 Postgress를 설치해서 호스트 컴퓨터와 포트로 통신 환경을 구축해놓으면 편하게 관리할 수 있다.
  • Docker로 데이터베이스를 관리하면, 간단한 docker cli 명령어로도 구축할 수 있고, docker cli에서 사용한 변수중에 환경변수를 Docker compose yml 파일에서 관리하면 여러개의 데이터베이스도 구축할 수 있다.

2-1. Docker-hub 방문하기

  • 도커 허브에 방문해서 적당한 PostgreSQL을 쇼핑한다. 호스트 컴퓨터랑 맞추기 위해서 17.7로 설정했다.

docker pull postgres:17.7

  • 쇼핑 완료 했고, 이제 여러가지 방향으로 postgre 사용해봐야겠다.

2-2. Docker cli로 컨테이너 생성 방법

  • postgre:17.7 컨테이너 사용시에 필요한 환경 변수들을 확인해보고 테스트 용도로 사용하면 적당한 것 같다.
  • Port 설정 : 호스트 PC와 컨테이너 PC의 통신을 위해서 이 방법을 사용해야 한다.

    docker run -d \
    --name postgres_container \
    -v /{볼륨 경로}:/var/lib/postgresql/data \
    -p 5433:5432 \
    -e POSTGRES_USER=postgres \
    -e POSTGRES_PASSWORD=postgres \
    -e POSTGRES_DB=postgres \
    postgres:17.7

2-3. Docker-compose로 컨테이너를 생성하는 방법

  • postgre:17.7을 단순히 하나만 쓴다면, cli가 간단하니 좋지만 Docker compose를 쓰면 여러개의 서버도 만들 수 있고 나중에 더 큰 프로젝트를 만들기까지 인사이트를 만들 수 있다.
  • Services는 cli로만 쳤던 container 정보를 추가적으로 옵션을 주면서 효율적으로 관리할 수 있도록 한다.
  • postgres:17.7가 잘못 종료되었을 때 restart 할 수 있는 옵셥, 데이터를 호스트 pc에 저장할 수 있게 하는 volume 설정
  • ports는 호스트 PC와 컨테이너 PC 사이에 통신 경로
  • environment는 데이터베이스를 만들면서 필요한 유저 이름, 패스워드, 데이터베이스이다.

version: '1.0'
services:
postgres:
image: postgres:17.7
restart: always
volumes:
- {Host PC Volume 경로}:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres

  • 뜬금 없을 수 있지만, MySQL과 yml 파일 구성한 것을 비교해보자. 혹시 데이터베이스를 이관하거나 할려면 다른 관계형 데이터베이스도 참조해볼만 하다.
  • 기본 포트 설정 차이 : 저장하는 위치, 통신하는 포트, 환경 변수의 이름이 조금씩 차이가 있지만 전체적인 구조는 비슷하다.
    • MySQL : 3306,
    • postgreSQL : 5432
  • volume을 위한 경로 차이
    • Postgres : /var/lib/postgresql/data
    • MySQL : /var/lib/mysql

version: '1.0'
services:
mysql:
image: mysql:8.0.22
container_name: mysql_container_1
restart: always
ports:
- 3306:3306 # host:docker
volumes: # 컨테이너 종료 후에도 데이터는 남기기 위해 볼륨 설정
- {Host PC Volume 경로}:/var/lib/mysql
environment:
- MYSQL_USER=mysql
- MYSQL_ROOT_PASSWORD=mysql
- MYSQL_DATABASE=mysql

0개의 댓글