[Docker] 도커 환경에서의 MongoDB dump 옮기기(MacOS)

주재완·2025년 5월 5일

Infrastructure

목록 보기
1/1
post-thumbnail

서론

크롤링을 로컬 PC(Macbook)으로 돌려서 데이터 수집을 진행했었습니다. 다만 저장한 데이터가 로컬 docker로 띄운 MongoDB 안에 있었는데, 이를 EC2 내부 docker로 띄운 개발용 MongoDB와 배포용 MongoDB 모두에 반영해야 되었습니다. Dump 파일을 옮기는 Docker 명령어 및 MongoDB 관련 사용법을 메모하고자 작성하게 되었습니다.

1. 로컬 Docker 컨테이너에서 MongoDB 덤프 생성

로컬에서 실행 중인 Docker MongoDB 컨테이너에서 데이터를 덤프합니다. 예를 들어 컨테이너 이름이 <컨테이너이름>, 데이터베이스 이름이 <DB이름>, 계정 정보가 다음과 같다고 가정합니다.

  • 사용자명: <USERNAME>
  • 비밀번호: <PASSWORD>
  • 인증 DB: admin
docker exec <컨테이너_이름> mongodump \
  -u <USERNAME> -p <PASSWORD> \
  --authenticationDatabase admin \
  --db <DB_이름> \
  --out /dump

이 명령은 컨테이너 내부의 /dump 디렉토리에 <DB_이름> DB를 .bson 파일로 덤프합니다.

2. 컨테이너 내부 덤프 파일을 로컬로 복사

컨테이너에서 로컬 PC로 덤프 파일을 복사합니다.

docker cp <컨테이너_이름>:/dump ./<로컬_저장_폴더>

복사 후 ./<로컬_저장_폴더>/<DB_이름> 경로에 .bson 파일이 생성되어 있어야 합니다.

3. EC2로 덤프 파일 전송

.pem 키 파일의 권한이 너무 널널하면 SSH 클라이언트에서 접속을 차단하므로 권한을 제한합니다.

chmod 400 <키_파일_경로>.pem

권한 설정 후, scp 명령어를 사용해 덤프 폴더를 EC2로 전송합니다.

scp -i <키_파일_경로>.pem -r ./<로컬_저장_폴더> ubuntu@<EC2_IP>:/home/ubuntu/

4. EC2에서 MongoDB 컨테이너로 덤프 복사

EC2에서 SSH 접속 후, 덤프 폴더를 MongoDB 컨테이너로 복사합니다.

docker cp ~/ <로컬_저장_폴더> <컨테이너_이름>:/<컨테이너_경로>

예시:

docker cp ~/dump mongo-dev:/dump
docker cp ~/dump mongo-deploy:/dump

5. MongoDB 덤프 복원 실행

개발용 컨테이너 복원

docker exec -it mongo-dev mongorestore \
  -u <USERNAME> -p <PASSWORD> \
  --authenticationDatabase admin \
  --db <DB_이름> /dump/<DB_이름>

배포용 컨테이너 복원

docker exec -it mongo-deploy mongorestore \
  -u <USERNAME> -p <PASSWORD> \
  --authenticationDatabase admin \
  --db <DB_이름> /dump/<DB_이름>

6. 복원 확인

복원이 완료되었는지 확인하기 위해 MongoDB에 접속합니다.

docker exec -it mongo-dev mongosh -u <USERNAME> -p <PASSWORD> --authenticationDatabase admin

MongoDB 셸 내에서 다음 명령을 실행합니다.

use <DB_이름>
show collections
profile
안녕하세요! 언제나 탐구하고 공부하는 개발자, 주재완입니다.

0개의 댓글