Docker로 MongoDB 설치 & python과 연결

밤새·2024년 2월 20일
0

Back/Front

목록 보기
3/12

준비물

  • docker desktop

Mongo DB 설치

1. MongoDB Docker 이미지 다운로드

명령 프롬프트나 터미널을 열고 다음 명령어를 입력하여 MongoDB Docker 이미지를 다운로드 합니다.

docker pull mongo

1-1. MongoDB 이미지 확인

그후 docker images 를 입력하여 잘 다운 받아졌는지 확인합니다.

위에처럼 뜬다면 잘 설치가 된 것입니다!

2. MongoDB 컨테이너 생성

다음 명령어를 입력하여 MongoDB 컨테이너를 생성합니다.
이때 my-mongo-cotainer에는 원하는 컨테이너 이름을 작성하면 됩니다.

docker run -d -p 27017:27017 --name my-mongo-container mongo

위의 명령은 호스트의 27017 포트와 컨테이너의 27017 포트를 매핑합니다.

2-1. MongoDB 컨테이너 확인

docker ps를 입력하여 MongoDB 컨테이너가 정상적으로 실행되고 있는지 확인을 합니다.
목록에 my-mongo-container 또는 선택한 컨테이너 이름이 나타나면 MongoDB가 정상적으로 실행 중입니다.

3. MongoDB 계정 설정

이제 MongoDB의 계정 설정을 하도록 하겠습니다. 먼저 아래 명령어를 입력해서 컨테이너에 직접 접속합니다.

docker exec -it my-mongo-container mongosh admin

그리고 나서 아래 쿼리를 실행하여 root 사용자의 비밀번호를 설정합니다.

db.createUser(
  {
    user: "admin",
    pwd: "yourpassword",
    roles: [ { role: "root", db: "admin" } ]
  }
)

yourpassword에는 원하는 비밀번호를 입력하면 됩니다.
이렇게 입력하게 되면 admin 사용자에 대한 비밀번호가 설정된것입니다!

비밀번호를 설정한 후에는 MongoDB 클라이언트 또는 연결하는 애플리케이션에서 해당 비밀번호를 사용하여 MongoDB에 접속할 수 있습니다.

Python과 MongoDB 연결

1. pymongo 설치

Python에서 MongoDB에 연결하려면 pymongo 라이브러리를 사용해야합니다.
터미널이나 명령 프롬프트에서 다음 명령을 실행하여 pymongo를 설치해주도록 하겠습니다.

pip install pymongo

2. 코드 작성

그럼 이제 MongoDB에 연결이 잘되는지 확인하는 Python 코드를 작성해보겠습니다.

import pymongo

# MongoDB 연결 정보
mongo_host = 'localhost'  # 또는 컨테이너의 IP 주소
mongo_port = 27017
mongo_user = 'admin'
mongo_password = 'yourpassword'

# MongoDB에 연결
try:
    client = pymongo.MongoClient(f'mongodb://{mongo_user}:{mongo_password}@{mongo_host}:{mongo_port}')
    db = client.admin  # 연결 테스트를 위해 admin 데이터베이스 사용
    print("Connected to MongoDB successfully!")
except pymongo.errors.ConnectionFailure as e:
    print(f"Failed to connect to MongoDB: {e}")
finally:
    if 'client' in locals():
        client.close()

위 코드에서 mongo_host, mongo_port, mongo_user, mongo_password 변수를 자신의 환경에 맞게 수정을 하고, 실행을 하게 된다면
연결이 성공적인지 또는 실패한 이유를 출력하게 됩니다.

저는 파일을 실행하니 정상적으로 잘 연결된다고 뜨게 되었습니다!

profile
프로젝트를 통해 배운 개념이나 겪은 문제점들을 정리하고, 회고록을 작성하며 성장해나가는 곳입니다 😊

0개의 댓글

관련 채용 정보