Docker를 사용한 PostgreSQL 데이터 영속성 유지: Docker Compose 활용 가이드
🤖 AI 추천
Docker 환경에서 PostgreSQL을 운영하며 데이터 유실 문제에 직면했거나, 데이터 영속성 확보 방안을 고민 중인 백엔드 개발자 및 DevOps 엔지니어에게 이 콘텐츠를 추천합니다.
🔖 주요 키워드

핵심 기술: 본 콘텐츠는 Docker 컨테이너에서 PostgreSQL을 운영할 때 발생하는 데이터 유실 문제를 해결하기 위해 Docker 볼륨 마운트 기법을 소개합니다. 특히 docker-compose.yml
파일을 사용하여 이름 있는 볼륨(named volume) 또는 호스트 디렉토리 바인드 마운트(bind mount)를 통해 PostgreSQL의 데이터 디렉토리(/var/lib/postgresql/data
)를 영구적으로 저장하는 방법을 설명합니다.
기술적 세부사항:
* 문제점: Docker 컨테이너는 기본적으로 임시적(ephemeral)이어서 중지 또는 삭제 시 컨테이너 내부의 모든 데이터가 유실됩니다.
* 해결 방안: Docker 볼륨을 사용하여 컨테이너 외부에 데이터를 저장합니다.
* PostgreSQL 데이터 위치: PostgreSQL은 /var/lib/postgresql/data
경로에 데이터를 저장합니다.
* Docker Compose 설정 (이름 있는 볼륨):
yaml
version: '3.8'
services:
db:
image: postgres:16
container_name: pg-container
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
pgdata:
- pgdata
볼륨은 Docker가 관리하며 명시적으로 삭제하지 않는 한 유지됩니다.
* Docker Compose 설정 (호스트 디렉토리 마운트):
yaml
services:
db:
image: postgres:16
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- ./pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
- ./pgdata
디렉토리는 호스트 머신에 직접 데이터를 저장하며, 파일 검사 및 백업이 용이합니다.
* 볼륨 관리: docker volume ls
, docker volume inspect
, docker volume rm <volume_name>
명령어로 볼륨을 관리합니다.
* 데이터 검증: 컨테이너 재시작 후에도 데이터가 유지되는지 docker exec
를 통해 확인하는 절차를 포함합니다.
개발 임팩트: Docker 환경에서 PostgreSQL의 안정적인 운영을 보장하며, 컨테이너 라이프사이클에 관계없이 데이터의 영속성을 확보할 수 있습니다. 이를 통해 데이터 유실 위험을 제거하고, 개발 및 운영 효율성을 증대시킬 수 있습니다.
커뮤니티 반응: (제시된 내용에 커뮤니티 반응에 대한 구체적인 언급은 없습니다.)
톤앤매너: 실무에서 자주 발생하는 문제를 명확히 정의하고, 구체적인 코드 예시와 함께 해결 방법을 단계별로 제시하는 전문적이고 실용적인 톤을 유지합니다.