과거의 프로젝트를 다시 실행하려는데 중지된 EC2 인스턴스를 다시 시작하면서 MySQL 데이터베이스 스키마가 사라져 있는 문제가 발생했습니다.
docker-compose.yml 파일에는 다음과 같이 설정이 되어 있었습니다.
environment:
MYSQL_DATABASE: shoppingmall
이러한 현상의 이유는 볼륨이 남아 있는 상태였기 때문이였습니다. 데이터베이스 스키마 및 설정은 볼륨에 저장되어 컨테이너의 상태와는 독립적으로 보존됩니다.
컨테이너 내부의 데이터를 컨테이너 외부에 저장하기 위한 방법 중 하나입니다. 볼륨은 컨테이너의 데이터를 영구적으로 저장하고 공유하는 데 사용됩니다. 다양한 종류의 데이터, 예를 들어 데이터베이스 파일, 설정 파일, 로그 파일 등을 컨테이너와 분리하여 관리하고 보존할 수 있습니다.
Docker Volume 특징
영구성: 볼륨에 저장된 데이터는 컨테이너가 중지되거나 제거되더라도 계속해서 유지됩니다. 이는 컨테이너의 재시작이나 업그레이드, 재배포 등의 상황에서 유용합니다.
공유: 여러 컨테이너 간에 볼륨을 공유할 수 있습니다. 데이터를 동일한 볼륨에 저장하여 여러 컨테이너에서 접근하고 공유할 수 있습니다.
백업과 복구: 볼륨에 저장된 데이터를 쉽게 백업하고 복구할 수 있습니다. 컨테이너와는 독립적으로 데이터를 관리할 수 있어 시스템 유지보수에 유용합니다.
성능 향상: 볼륨은 호스트 파일 시스템에 저장되기 때문에 컨테이너 내부의 파일 입출력이 빠르며, 컨테이너와 볼륨 간의 데이터 이동이 가상화된 파일 시스템보다 빠릅니다.
docker-compose down
docker volume rm $(docker volume ls -q)
이 명령을 실행하면 Docker에서 사용 중인 모든 볼륨이 삭제되므로, 데이터가 모두 삭제될 수 있습니다. 주의해서 사용하셔야 합니다. 데이터를 보호해야 하는 경우에는 절대로 실행하지 말아야 합니다.