본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 27. · 0 Views
MongoDB 설치와 환경 구성 완벽 가이드
MongoDB를 처음 시작하는 개발자를 위한 설치 가이드입니다. Community Server부터 Compass, mongosh, Docker까지 실무에서 필요한 모든 환경 구성 방법을 단계별로 알려드립니다.
목차
- MongoDB_Community_Server_설치
- MongoDB_Compass_설치
- mongosh_쉘_사용법
- 데이터베이스와_컬렉션_생성
- 기본_설정_파일_이해
- Docker로_MongoDB_실행
1. MongoDB Community Server 설치
김개발 씨는 새 프로젝트에서 MongoDB를 사용하게 되었습니다. 그런데 막상 설치하려고 보니 어디서부터 시작해야 할지 막막합니다.
"일단 공식 홈페이지에서 다운로드 받으면 되겠지?" 하고 생각했지만, 선배 박시니어 씨가 다가와 말합니다. "MongoDB 설치는 몇 가지 주의할 점이 있어요.
제대로 알려드릴게요."
MongoDB Community Server는 MongoDB의 무료 오픈소스 버전입니다. 마치 집을 짓기 전에 땅을 먼저 다지는 것처럼, 모든 MongoDB 작업의 기반이 됩니다.
운영체제별로 설치 방법이 조금씩 다르지만, 기본 원리를 이해하면 어렵지 않습니다.
다음 코드를 살펴봅시다.
# Ubuntu/Debian에서 MongoDB 설치
# 1. MongoDB 공식 GPG 키 추가
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
# 2. 저장소 목록 추가
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
# 3. 패키지 목록 갱신 및 설치
sudo apt-get update
sudo apt-get install -y mongodb-org
# 4. MongoDB 서비스 시작
sudo systemctl start mongod
sudo systemctl enable mongod
김개발 씨는 입사 후 첫 번째 프로젝트를 맡게 되었습니다. 팀장님이 "이번 프로젝트는 MongoDB를 사용할 거예요"라고 말씀하셨을 때, 김개발 씨는 속으로 당황했습니다.
관계형 데이터베이스인 MySQL만 써봤기 때문입니다. 점심시간에 선배 박시니어 씨에게 조심스럽게 물었습니다.
"선배, MongoDB가 뭐예요? MySQL이랑 뭐가 달라요?" 박시니어 씨가 웃으며 대답합니다.
"MongoDB는 NoSQL 데이터베이스야. MySQL처럼 테이블에 데이터를 넣는 게 아니라, JSON 형태로 데이터를 저장해.
마치 서랍장에 물건을 정해진 칸에 넣는 게 MySQL이라면, MongoDB는 큰 상자에 라벨 붙여서 자유롭게 넣는 것과 비슷해." 그렇다면 왜 MongoDB를 사용할까요? 현대 웹 애플리케이션은 다양한 형태의 데이터를 다룹니다.
사용자 프로필, 게시물, 댓글, 좋아요 기록 등 데이터 구조가 제각각입니다. 관계형 데이터베이스에서는 이런 다양한 데이터를 담기 위해 수많은 테이블을 만들고 조인해야 합니다.
하지만 MongoDB는 유연한 스키마 덕분에 이런 복잡함 없이 데이터를 저장할 수 있습니다. 이제 설치를 시작해봅시다.
MongoDB는 Community Server와 Enterprise Server 두 가지 버전이 있습니다. Community Server는 무료이고, Enterprise Server는 유료로 추가 기능을 제공합니다.
우리는 학습과 대부분의 실무에서 충분한 Community Server를 설치합니다. 위의 코드를 살펴보겠습니다.
먼저 MongoDB 공식 GPG 키를 추가합니다. GPG 키는 마치 택배 상자의 봉인 스티커와 같습니다.
이 키가 있어야 "이 패키지가 진짜 MongoDB에서 배포한 것"임을 확인할 수 있습니다. 다음으로 저장소 목록을 추가합니다.
이는 "MongoDB 패키지를 어디서 다운로드 받을지" 알려주는 주소록과 같습니다. Ubuntu의 기본 저장소에는 MongoDB가 없기 때문에, 공식 저장소를 직접 등록해야 합니다.
apt-get update로 패키지 목록을 갱신한 후, mongodb-org 패키지를 설치합니다. 이 패키지에는 MongoDB 서버뿐만 아니라 쉘, 도구들이 모두 포함되어 있습니다.
마지막으로 systemctl 명령어로 MongoDB 서비스를 시작하고, 부팅 시 자동 시작되도록 설정합니다. enable 옵션은 컴퓨터를 껐다 켜도 MongoDB가 자동으로 실행되게 해줍니다.
Windows 사용자라면 공식 홈페이지에서 MSI 설치 파일을 다운로드하여 설치할 수 있습니다. macOS 사용자는 Homebrew를 통해 brew install mongodb-community로 간단히 설치할 수 있습니다.
설치가 완료되면 터미널에서 mongod --version 명령어로 버전을 확인해보세요. 버전 정보가 출력되면 성공입니다.
김개발 씨가 터미널에 명령어를 입력하고 버전 정보를 확인했습니다. "와, 생각보다 어렵지 않네요!" 박시니어 씨가 고개를 끄덕입니다.
"잘했어. 이제 기초 공사는 끝났어.
다음은 MongoDB를 편하게 다룰 수 있는 도구들을 설치해보자."
실전 팁
💡 - 설치 전에 기존에 MongoDB가 설치되어 있는지 확인하세요. 버전 충돌이 발생할 수 있습니다.
- 방화벽이 설정된 서버에서는 27017 포트를 열어주어야 외부에서 접속할 수 있습니다.
2. MongoDB Compass 설치
MongoDB 서버 설치를 마친 김개발 씨가 박시니어 씨에게 물었습니다. "선배, 이제 데이터를 어떻게 확인해요?
터미널에서만 봐야 하나요?" 박시니어 씨가 미소 지으며 대답합니다. "GUI 도구가 있어.
MySQL의 Workbench처럼 MongoDB에도 Compass라는 공식 도구가 있거든."
MongoDB Compass는 MongoDB 공식 GUI 클라이언트입니다. 마치 파일 탐색기로 폴더와 파일을 쉽게 볼 수 있듯이, Compass를 사용하면 데이터베이스와 컬렉션을 시각적으로 탐색하고 관리할 수 있습니다.
쿼리 작성, 인덱스 분석, 성능 모니터링까지 한 곳에서 가능합니다.
다음 코드를 살펴봅시다.
# Ubuntu에서 Compass 설치
# 1. 공식 홈페이지에서 .deb 파일 다운로드
wget https://downloads.mongodb.com/compass/mongodb-compass_1.42.0_amd64.deb
# 2. 패키지 설치
sudo dpkg -i mongodb-compass_1.42.0_amd64.deb
# 3. 의존성 문제 해결 (필요시)
sudo apt-get install -f
# 4. Compass 실행
mongodb-compass
# 연결 문자열 예시
# mongodb://localhost:27017
터미널에서 검은 화면과 흰 글씨만 보던 김개발 씨에게 GUI 도구는 마치 사막에서 만난 오아시스 같았습니다. "정말요?
MySQL Workbench처럼 클릭으로 데이터를 볼 수 있어요?" 박시니어 씨가 자신의 컴퓨터 화면을 보여줍니다. "이게 Compass야.
보이지? 왼쪽에 데이터베이스 목록이 있고, 클릭하면 안에 있는 데이터를 바로 볼 수 있어." MongoDB Compass는 MongoDB에서 공식적으로 제공하는 GUI 클라이언트입니다.
무료로 사용할 수 있으며, 데이터베이스 관리에 필요한 대부분의 기능을 갖추고 있습니다. 왜 Compass가 필요할까요?
물론 터미널에서 모든 작업을 할 수 있습니다. 하지만 수천 개의 문서가 있는 컬렉션에서 특정 데이터를 찾거나, 쿼리 성능을 분석하거나, 인덱스 상태를 확인하는 작업을 터미널에서 하면 매우 번거롭습니다.
Compass는 이런 작업을 시각적으로 쉽게 처리할 수 있게 해줍니다. 설치 방법을 살펴보겠습니다.
Ubuntu에서는 공식 홈페이지에서 .deb 파일을 다운로드하여 설치합니다. Windows와 macOS에서는 설치 파일을 다운로드하여 더블클릭으로 설치하면 됩니다.
Compass를 처음 실행하면 연결 화면이 나타납니다. 여기에 MongoDB 서버의 연결 문자열을 입력합니다.
로컬에 설치한 MongoDB에 연결하려면 mongodb://localhost:27017을 입력하면 됩니다. 연결에 성공하면 왼쪽 패널에 데이터베이스 목록이 표시됩니다.
admin, config, local은 MongoDB가 내부적으로 사용하는 시스템 데이터베이스입니다. 여기에 우리가 만들 데이터베이스가 추가됩니다.
Compass의 핵심 기능 중 하나는 쿼리 빌더입니다. 복잡한 쿼리 문법을 외우지 않아도 필터 조건을 클릭으로 추가할 수 있습니다.
필터, 프로젝션, 정렬, 제한 등을 직관적인 인터페이스로 설정하고 실행할 수 있습니다. 또한 Aggregation Pipeline 빌더도 제공합니다.
Aggregation은 MongoDB의 강력한 데이터 처리 기능인데, 문법이 복잡하여 처음 접하면 어렵습니다. Compass에서는 각 스테이지를 시각적으로 추가하고 결과를 실시간으로 확인할 수 있습니다.
Explain Plan 기능은 쿼리 성능을 분석해줍니다. 어떤 인덱스를 사용했는지, 몇 개의 문서를 스캔했는지 한눈에 볼 수 있습니다.
느린 쿼리를 최적화할 때 매우 유용합니다. 김개발 씨가 Compass를 설치하고 로컬 MongoDB에 연결했습니다.
"와, 정말 편하네요! 데이터가 이렇게 예쁘게 보이다니." 박시니어 씨가 말합니다.
"Compass는 개발할 때 정말 많이 쓰게 될 거야. 하지만 터미널 명령어도 알아둬야 해.
서버에서는 GUI를 쓸 수 없으니까."
실전 팁
💡 - Compass는 Read Only 모드로 연결할 수 있어서 실수로 데이터를 수정하는 것을 방지할 수 있습니다.
- 자주 사용하는 쿼리는 Favorites에 저장해두면 편리합니다.
3. mongosh 쉘 사용법
김개발 씨가 서버에 SSH로 접속했습니다. 데이터를 확인해야 하는데 Compass를 쓸 수 없습니다.
"이럴 때는 어떻게 해요?" 박시니어 씨가 대답합니다. "mongosh를 쓰면 돼.
MongoDB의 공식 쉘이야. 터미널에서 직접 데이터베이스를 다룰 수 있어."
mongosh는 MongoDB의 공식 셸 인터페이스입니다. 마치 Python의 인터프리터처럼 명령어를 입력하면 즉시 결과를 볼 수 있습니다.
JavaScript 문법을 기반으로 하며, 데이터 조회, 수정, 관리 작업을 모두 수행할 수 있습니다.
다음 코드를 살펴봅시다.
# mongosh 접속
mongosh
# 특정 호스트/포트로 접속
mongosh "mongodb://localhost:27017"
# 인증이 필요한 경우
mongosh "mongodb://username:password@localhost:27017/mydb"
# 기본 명령어들
show dbs // 모든 데이터베이스 목록
use mydb // 데이터베이스 선택 (없으면 생성)
show collections // 현재 DB의 컬렉션 목록
db.users.find() // users 컬렉션의 모든 문서 조회
db.users.findOne() // 첫 번째 문서만 조회
db.users.countDocuments() // 문서 개수
GUI 없는 서버 환경에서 데이터베이스를 다뤄야 할 때가 있습니다. 운영 서버에서 긴급하게 데이터를 확인해야 할 때, Compass를 설치할 수 없는 환경에서 작업해야 할 때, 바로 이럴 때 mongosh가 필요합니다.
mongosh는 "MongoDB Shell"의 줄임말입니다. 예전에는 mongo라는 레거시 쉘을 사용했지만, MongoDB 5.0부터 mongosh가 공식 쉘이 되었습니다.
mongosh는 더 나은 자동완성, 구문 강조, 에러 메시지를 제공합니다. 터미널에서 mongosh를 입력하면 MongoDB 쉘에 접속됩니다.
기본적으로 localhost:27017에 연결을 시도합니다. 다른 서버에 연결하려면 연결 문자열을 인자로 전달합니다.
접속하면 프롬프트가 나타납니다. 여기서 JavaScript 문법의 명령어를 입력합니다.
show dbs는 모든 데이터베이스 목록을 보여줍니다. 처음에는 admin, config, local 세 개의 시스템 데이터베이스만 보입니다.
use 명령어로 데이터베이스를 선택합니다. 재미있는 점은 없는 데이터베이스 이름을 입력해도 에러가 나지 않습니다.
MongoDB는 지연 생성 방식을 사용하기 때문입니다. 실제로 데이터를 넣을 때 데이터베이스가 만들어집니다.
데이터베이스를 선택하면 db 객체를 통해 작업합니다. db.users는 users 컬렉션을 가리킵니다.
find() 메서드로 모든 문서를 조회하고, findOne()으로 첫 번째 문서만 조회합니다. mongosh의 장점 중 하나는 JavaScript를 그대로 사용할 수 있다는 것입니다.
변수를 선언하고, 반복문을 돌리고, 함수를 정의할 수 있습니다. 복잡한 데이터 처리도 스크립트로 작성할 수 있습니다.
자동완성 기능도 유용합니다. db.를 입력하고 Tab 키를 누르면 사용 가능한 메서드 목록이 나타납니다.
명령어를 다 외우지 않아도 됩니다. help 명령어를 입력하면 사용 가능한 명령어 목록을 볼 수 있습니다.
특정 명령어의 도움말은 db.collection.find.help()처럼 뒤에 .help()를 붙이면 됩니다. 종료할 때는 exit 또는 quit을 입력합니다.
Ctrl+C를 두 번 눌러도 종료됩니다. 김개발 씨가 mongosh에서 이것저것 명령어를 입력해봅니다.
"오, 자동완성이 되니까 편하네요. 그리고 JavaScript 문법이라 익숙해요." 박시니어 씨가 말합니다.
"그래, mongosh는 정말 자주 쓰게 될 거야. 특히 서버 작업할 때 필수야."
실전 팁
💡 - mongosh에서 .editor를 입력하면 여러 줄의 코드를 편집할 수 있는 에디터 모드가 열립니다.
- 히스토리 기능이 있어서 위/아래 화살표로 이전 명령어를 불러올 수 있습니다.
4. 데이터베이스와 컬렉션 생성
mongosh 사용법을 익힌 김개발 씨가 이제 직접 데이터베이스를 만들어보려고 합니다. "선배, MySQL에서는 CREATE DATABASE 명령어를 쓰는데, MongoDB에서도 그런 게 있나요?" 박시니어 씨가 고개를 젓습니다.
"MongoDB는 좀 달라. 더 간단해."
MongoDB에서 데이터베이스와 컬렉션은 명시적으로 생성하지 않아도 됩니다. 마치 폴더에 파일을 저장하면 폴더가 자동으로 만들어지는 것처럼, 데이터를 삽입하면 데이터베이스와 컬렉션이 자동으로 생성됩니다.
물론 명시적으로 생성할 수도 있습니다.
다음 코드를 살펴봅시다.
// 데이터베이스 선택 (없으면 생성 준비)
use shop
// 컬렉션에 문서 삽입 (컬렉션 자동 생성)
db.products.insertOne({
name: "노트북",
price: 1200000,
category: "전자제품",
stock: 50,
createdAt: new Date()
})
// 여러 문서 한번에 삽입
db.products.insertMany([
{ name: "마우스", price: 35000, category: "주변기기", stock: 200 },
{ name: "키보드", price: 89000, category: "주변기기", stock: 150 }
])
// 명시적 컬렉션 생성 (옵션 지정 필요시)
db.createCollection("logs", {
capped: true, // 크기 제한 컬렉션
size: 10485760, // 최대 10MB
max: 5000 // 최대 5000개 문서
})
MySQL이나 PostgreSQL을 써본 개발자라면 데이터베이스와 테이블을 먼저 만들고 데이터를 넣는 순서에 익숙할 것입니다. CREATE DATABASE, CREATE TABLE 명령어를 실행하고, 스키마를 정의한 후에야 INSERT를 할 수 있었습니다.
MongoDB는 다릅니다. 스키마리스라는 특징 덕분에 미리 구조를 정의할 필요가 없습니다.
그냥 데이터를 넣으면 됩니다. 코드를 살펴보겠습니다.
use shop은 shop 데이터베이스를 선택합니다. 이 시점에서 shop 데이터베이스가 실제로 생성되지는 않습니다.
MongoDB는 "아, shop을 쓸 거구나"라고 기억만 해둡니다. 다음으로 **db.products.insertOne()**을 실행합니다.
이 순간 마법이 일어납니다. MongoDB는 shop 데이터베이스가 없다는 것을 확인하고 생성합니다.
products 컬렉션도 없으므로 생성합니다. 그리고 문서를 삽입합니다.
이 모든 것이 한 번의 명령어로 이루어집니다. 삽입하는 문서를 보면 JSON 형태임을 알 수 있습니다.
name, price, category 등의 필드가 있습니다. 각 필드의 타입을 미리 정의하지 않았습니다.
문자열, 숫자, 날짜 등 다양한 타입을 자유롭게 사용할 수 있습니다. **insertMany()**는 여러 문서를 한 번에 삽입합니다.
배열 안에 여러 객체를 넣으면 됩니다. 네트워크 왕복을 줄여 성능이 좋습니다.
그런데 모든 컬렉션을 자동 생성에 맡기면 안 되는 경우도 있습니다. Capped Collection이 대표적인 예입니다.
Capped Collection은 크기가 제한된 컬렉션으로, 로그 저장에 많이 사용됩니다. 오래된 데이터가 자동으로 삭제되어 디스크 공간을 관리하기 쉽습니다.
db.createCollection() 명령어로 옵션을 지정하여 컬렉션을 생성합니다. capped: true로 Capped Collection임을 명시하고, size로 최대 바이트 크기를, max로 최대 문서 수를 지정합니다.
데이터베이스를 삭제하려면 **db.dropDatabase()**를 사용합니다. 컬렉션 삭제는 **db.collection.drop()**입니다.
이 명령어들은 복구할 수 없으니 신중하게 사용해야 합니다. 김개발 씨가 직접 데이터베이스와 컬렉션을 만들어봅니다.
"와, MySQL보다 훨씬 간단하네요. CREATE문 없이 바로 데이터를 넣으니까 빠르게 개발할 수 있겠어요." 박시니어 씨가 덧붙입니다.
"맞아. 하지만 이 유연함이 양날의 검이 될 수도 있어.
스키마가 없다 보니 데이터 일관성을 개발자가 직접 관리해야 해."
실전 팁
💡 - 프로덕션 환경에서는 컬렉션에 Validation 규칙을 설정하여 데이터 일관성을 유지하는 것이 좋습니다.
- 컬렉션 이름에는 공백이나 특수문자를 피하고, 소문자와 언더스코어를 사용하세요.
5. 기본 설정 파일 이해
며칠 후, 김개발 씨가 박시니어 씨에게 질문합니다. "선배, MongoDB 포트를 바꾸고 싶은데 어떻게 해요?
그리고 데이터가 어디에 저장되는지도 궁금해요." 박시니어 씨가 대답합니다. "좋은 질문이야.
MongoDB 설정 파일을 알아야 할 때가 됐네."
mongod.conf는 MongoDB 서버의 설정 파일입니다. 마치 자동차의 계기판 설정처럼, 포트 번호, 데이터 저장 경로, 로그 설정, 보안 옵션 등을 이 파일에서 관리합니다.
YAML 형식으로 작성되어 있어 읽기 쉽습니다.
다음 코드를 살펴봅시다.
# /etc/mongod.conf (Linux 기본 경로)
# 데이터 저장 경로
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# 로그 설정
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# 네트워크 설정
net:
port: 27017
bindIp: 127.0.0.1 # 로컬만 허용, 외부 허용시 0.0.0.0
# 보안 설정 (인증 활성화)
security:
authorization: enabled
# 복제본 세트 설정 (필요시)
# replication:
# replSetName: "rs0"
MongoDB를 설치하면 기본 설정으로 잘 작동합니다. 하지만 실제 서비스를 운영하다 보면 기본 설정을 바꿔야 할 일이 생깁니다.
포트 충돌, 디스크 용량 관리, 보안 강화 등 다양한 이유로 설정을 조정해야 합니다. 설정 파일의 위치는 운영체제마다 다릅니다.
Linux에서는 /etc/mongod.conf, Windows에서는 MongoDB 설치 폴더 안에, macOS Homebrew 설치 시에는 /usr/local/etc/mongod.conf에 있습니다. 파일을 열어보면 YAML 형식으로 작성되어 있습니다.
들여쓰기로 계층 구조를 표현하고, 콜론으로 키와 값을 구분합니다. JSON보다 읽기 쉽고 주석도 달 수 있습니다.
storage 섹션부터 살펴보겠습니다. dbPath는 MongoDB가 데이터를 저장하는 디렉토리입니다.
기본값은 /var/lib/mongodb인데, 디스크 용량이 큰 다른 경로로 변경할 수 있습니다. journal.enabled는 저널링 활성화 여부입니다.
저널링은 데이터 안전성을 위해 반드시 켜두어야 합니다. systemLog 섹션은 로그 설정입니다.
로그 파일 경로와 로그 추가 모드를 설정합니다. logAppend가 true면 MongoDB를 재시작해도 기존 로그에 이어서 기록합니다.
net 섹션이 가장 자주 수정하는 부분입니다. port는 MongoDB 서버 포트입니다.
기본값 27017을 다른 값으로 바꿀 수 있습니다. bindIp는 어떤 IP에서 접속을 허용할지 결정합니다.
127.0.0.1은 로컬 접속만 허용합니다. 외부에서 접속해야 한다면 0.0.0.0으로 바꾸거나 특정 IP를 지정합니다.
security 섹션은 보안 관련 설정입니다. authorization: enabled를 설정하면 인증 없이는 데이터베이스에 접근할 수 없습니다.
프로덕션 환경에서는 반드시 활성화해야 합니다. 설정을 변경한 후에는 MongoDB 서비스를 재시작해야 적용됩니다.
sudo systemctl restart mongod 명령어를 사용합니다. 설정 파일에 문법 오류가 있으면 MongoDB가 시작되지 않으니 주의해야 합니다.
설정 파일을 수정하기 전에 백업을 해두는 것이 좋습니다. sudo cp /etc/mongod.conf /etc/mongod.conf.backup으로 복사해두면 문제가 생겼을 때 복원할 수 있습니다.
김개발 씨가 설정 파일을 열어봅니다. "생각보다 복잡하지 않네요.
YAML이라 읽기 편해요." 박시니어 씨가 주의를 줍니다. "맞아.
하지만 함부로 바꾸면 안 돼. 특히 bindIp를 0.0.0.0으로 바꾸면서 보안 설정을 안 하면 누구나 접속할 수 있어.
보안 사고 나기 딱 좋아."
실전 팁
💡 - 설정 변경 전에 항상 백업을 만들어두세요.
- bindIp를 0.0.0.0으로 설정할 때는 반드시 인증을 활성화하고 방화벽을 설정하세요.
6. Docker로 MongoDB 실행
신입 개발자가 팀에 합류했습니다. 김개발 씨가 MongoDB 설치를 도와주려는데, 신입의 노트북에는 이미 다른 버전의 MongoDB가 설치되어 있어 충돌이 났습니다.
박시니어 씨가 해결책을 제시합니다. "이럴 때는 Docker를 쓰는 게 좋아.
환경 충돌 걱정 없이 깔끔하게 실행할 수 있거든."
Docker를 사용하면 MongoDB를 컨테이너로 실행할 수 있습니다. 마치 가상 머신처럼 격리된 환경에서 실행되지만, 훨씬 가볍고 빠릅니다.
개발 환경 설정, 버전 관리, 팀원 간 환경 통일에 Docker는 필수 도구가 되었습니다.
다음 코드를 살펴봅시다.
# MongoDB 이미지 다운로드 및 실행
docker run -d \
--name mongodb \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password123 \
-v mongodb_data:/data/db \
mongo:7.0
# 실행 중인 컨테이너 확인
docker ps
# 컨테이너 내부 mongosh 접속
docker exec -it mongodb mongosh -u admin -p password123
# docker-compose.yml 예시
version: '3.8'
services:
mongodb:
image: mongo:7.0
container_name: mongodb
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password123
volumes:
- mongodb_data:/data/db
volumes:
mongodb_data:
로컬에 MongoDB를 직접 설치하면 여러 문제가 생길 수 있습니다. 기존에 설치된 소프트웨어와 충돌하거나, 프로젝트마다 다른 버전이 필요하거나, 설치 과정에서 예상치 못한 오류가 발생하기도 합니다.
Docker는 이런 문제를 해결합니다. 컨테이너라는 격리된 환경에서 애플리케이션을 실행하기 때문에, 호스트 시스템에 영향을 주지 않습니다.
필요 없으면 컨테이너만 삭제하면 깔끔합니다. 먼저 Docker가 설치되어 있어야 합니다.
Windows와 macOS에서는 Docker Desktop을, Linux에서는 Docker Engine을 설치합니다. docker run 명령어로 MongoDB 컨테이너를 실행합니다.
각 옵션을 살펴보겠습니다. -d는 백그라운드 실행, --name은 컨테이너 이름, -p는 포트 매핑입니다.
27017:27017은 호스트의 27017 포트를 컨테이너의 27017 포트에 연결한다는 의미입니다. -e 옵션으로 환경 변수를 설정합니다.
MONGO_INITDB_ROOT_USERNAME과 MONGO_INITDB_ROOT_PASSWORD는 관리자 계정을 자동으로 생성합니다. 이 계정으로 인증하여 접속합니다.
-v 옵션이 중요합니다. 컨테이너는 삭제하면 내부 데이터도 사라집니다.
볼륨을 사용하면 데이터를 호스트에 저장하여 컨테이너를 삭제해도 데이터를 유지할 수 있습니다. docker exec 명령어로 실행 중인 컨테이너에 접속합니다.
-it 옵션은 인터랙티브 터미널을 의미합니다. 컨테이너 내부에서 mongosh를 실행하여 데이터베이스에 접속합니다.
여러 컨테이너를 함께 관리하려면 docker-compose를 사용합니다. YAML 파일에 설정을 작성하고, docker-compose up -d 명령어로 실행합니다.
MongoDB와 함께 애플리케이션 서버, Redis 등을 함께 구성할 수 있습니다. 컨테이너를 중지하려면 docker stop mongodb, 삭제하려면 docker rm mongodb를 실행합니다.
볼륨도 삭제하려면 docker volume rm mongodb_data를 실행합니다. 신입 개발자가 Docker로 MongoDB를 실행했습니다.
"와, 정말 간단하네요! 설치 과정에서 에러도 안 나고요." 김개발 씨도 깨달음을 얻었습니다.
"저도 앞으로 Docker로 개발 환경 구성해야겠어요." 박시니어 씨가 웃으며 말합니다. "요즘은 Docker가 기본이야.
배포할 때도 Docker 이미지로 하면 '내 컴퓨터에서는 되는데' 문제가 없어져."
실전 팁
💡 - 프로덕션에서는 mongo 이미지 대신 mongo:7.0처럼 버전을 명시하세요. latest는 예상치 못한 업데이트를 받을 수 있습니다.
- docker-compose.yml 파일을 프로젝트에 포함하면 팀원 모두가 같은 환경으로 개발할 수 있습니다.
이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!
댓글 (0)
함께 보면 좋은 카드 뉴스
Transformers.js 소개 및 설치 완벽 가이드
브라우저와 Node.js에서 머신러닝 모델을 실행할 수 있는 Transformers.js의 개념부터 설치, 첫 예제 실행까지 초급 개발자를 위해 쉽게 설명합니다.
MongoDB 문서와 BSON 구조 완벽 가이드
MongoDB의 핵심 데이터 구조인 문서(Document)와 BSON 형식을 초급 개발자도 쉽게 이해할 수 있도록 설명합니다. JSON과 BSON의 차이점부터 ObjectId, 내장 문서, 배열까지 실무에서 바로 활용할 수 있는 내용을 담았습니다.
MongoDB 소개와 NoSQL 이해
관계형 데이터베이스의 한계를 넘어 등장한 NoSQL과 MongoDB의 세계를 탐험합니다. 문서 지향 데이터베이스의 개념부터 실무 활용 사례까지, 초급 개발자도 쉽게 이해할 수 있도록 친절하게 안내합니다.
Roundcube 웹메일 인터페이스 완벽 가이드
Docker 컨테이너 기반으로 Roundcube 웹메일을 구축하고, Nginx 리버스 프록시부터 플러그인 관리, 테마 커스터마이징까지 전체 과정을 다룹니다. 초급 개발자도 쉽게 따라할 수 있는 실무 중심 가이드입니다.
메일 클라이언트 연결 설정 완벽 가이드
다양한 메일 클라이언트에서 IMAP, POP3, SMTP 설정을 올바르게 구성하는 방법을 알아봅니다. Outlook부터 모바일 앱까지, 실무에서 바로 적용할 수 있는 설정 가이드입니다.