본문 바로가기

리눅스

도커 컨테이너로 PostgreSQL을 구성하는 방법

반응형

도커 컨테이너로 PostgreSQL을 구성하는 방법

컨테이너 작업 디렉토리 생성

mkdir -p /docker-container/docker-postgres
cd /docker-container/docker-postgres

docker-compose.yaml 생성

vim docker-compose.yaml
services:

  postgres:
    image: postgres:17.5
    container_name: postgres
    restart: unless-stopped
    environment:
      TZ: Asia/Seoul
      POSTGRES_DB: mydatabase
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myuser -d mydatabase --quiet"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:
    name: postgres_data

컨테이너 실행

docker compose up -d

PostgreSQL 접속 예시

docker compose exec postgres psql -U myuser -d mydatabase
psql (17.5 (Debian 17.5-1.pgdg120+1))
Type "help" for help.

mydatabase=#
  • PostgreSQL 버전 확인
SELECT version();

-----------------------------------------------------------------------------------------------------
 PostgreSQL 17.5 (Debian 17.5-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
(1 row)

컨테이너 로그

docker compose logs -f postgres

컨테이너 중지 및 삭제

docker compose down
728x90

PostgreSQL 기본 사용법

사용자 및 데이터베이스 생성

CREATE USER myuser WITH PASSWORD 'mypassword';
CREATE DATABASE mydatabase OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

셸 종료

\q

PostgreSQL 컨테이너

  • DB 데이터 디렉토리를 로컬 디렉토리(./data)로 설정
  • 계정, 비밀번호, DB 이름 등 환경 변수는 .env 파일로 분리

컨테이너 작업 디렉토리 이동

cd /docker-container/docker-postgres

DB 데이터 디렉토리 생성

mkdir -p data

.env 파일 생성

vim .env
POSTGRES_DB=mydatabase
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword

docker-compose.yaml 편집

services:

  postgres:
    image: postgres:17.5
    container_name: postgres
    restart: unless-stopped
    env_file:
      - .env      
    environment:
      TZ: Asia/Seoul      
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB --quiet"]
      interval: 10s
      timeout: 5s
      retries: 5

컨테이너 실행

docker compose up -d

 

반응형