Part 18. Named Volume으로 MySQL 데이터 유지하기
이번 글에서는 Docker Compose에서 이름 있는 Volume을 설정하는 방법을 알아본다. MySQL 데이터 폴더를 Volume과 연결하여 컨테이너를 삭제해도 데이터가 유지되는 구조를 만든다.
Part 18. Named Volume으로 MySQL 데이터 유지하기
1. 이번 Part 목표
지난 Part에서는 Docker Volume이 왜 필요한지 알아보았다.
이번에는 Docker Compose에서 이름 있는 Volume을 직접 설정해본다.
2. 익명 Volume과 Named Volume
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
Docker는 상황에 따라 자동으로 Volume을 만들 수 있다.
이때 이름이 긴 문자열로 표시될 수 있다.
10d2536c5b90f78f831ef5661249ccf...
이런 Volume은 관리하기 어렵다.
그래서 실무에서는 이름을 붙여 관리하는 Named Volume을 사용한다.
3. Named Volume이란?
Named Volume은 개발자가 직접 이름을 정한 Volume이다.
mysql_data
이렇게 이름을 붙이면 어떤 용도인지 바로 알 수 있다.
4. MySQL 데이터 저장 위치
MySQL은 컨테이너 내부에서 데이터를 다음 경로에 저장한다.
/var/lib/mysql
이 폴더를 Volume과 연결하면 데이터가 컨테이너 밖에 유지된다.
5. docker-compose.yml 예시
services:
db:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: zenoblog
ports:
- "3307:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
6. volumes 설정 의미
volumes:
- mysql_data:/var/lib/mysql
의미는 다음과 같다.
mysql_data Volume
↓
MySQL 컨테이너 내부의 /var/lib/mysql
즉 MySQL 데이터가 mysql_data Volume에 저장된다.
7. 아래쪽 volumes는 무엇인가?
volumes:
mysql_data:
Compose 파일 아래쪽의 volumes는 사용할 Volume을 선언하는 영역이다.
서비스 안의 volumes는 연결 설정이고, 파일 아래쪽의 volumes는 Volume 생성 선언이다.
8. 실행 흐름
docker compose up -d
↓
mysql_data Volume 생성
↓
MySQL 컨테이너 생성
↓
/var/lib/mysql 데이터 저장
↓
컨테이너 삭제 후에도 Volume 유지
9. 확인 명령어
docker volume ls
Docker Volume 목록을 확인한다.
정상이라면 mysql_data가 포함된 Volume이 보인다.
10. 왜 중요한가?
실제 블로그 서비스에서는 게시글, 회원, 설정 데이터가 사라지면 안 된다.
따라서 MySQL 같은 데이터베이스 컨테이너는 반드시 Volume과 함께 사용해야 한다.
11. Part 18 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
Anonymous Volume
=
자동 생성된 이름 없는 Volume
Named Volume
=
직접 이름 붙인 Volume
/var/lib/mysql
=
MySQL 데이터 저장 경로
mysql_data:/var/lib/mysql
=
MySQL 데이터를 Volume에 저장
다음 Part에서는 Docker Compose로 Laravel app과 MySQL db를 함께 구성하는 흐름을 알아본다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD








