0%

Docker에서 MongoDB 설치하기

Docker에서 MongoDB 설치하기

최근 Spring boot에 사용자 로그 기록을 위해 MongoDB를 사용해야 했고, 이를 위해 Aws에서 Docker 기반에 MongoDB 환경을 구성하게 되었다.
나중에 또 사용할 것 같아서 정리하여 포스팅을 하였다.


진행 순서

순서는 아래와 같이 진행하였다.

1. 이미지 받아오기

먼저 Docker에서 MongoDB 이미지를 받는다.
공식 이미지이며 최신 버전을 받았다.

docker pull mongo

2. 구동

받은 이미지를 통해 MongoDB를 구동하였다.
아래의 명령어는 MongoDB 이미지를 수행하는 명령어이고 간단하게 풀어보면 다음과 같다.

  • –name : 컨테이너 이름
  • -v : 볼륨을 외부와 연결 -> 아래에서는 db볼륨을 외부로 연결하였다.
  • -d : 데몬으로 실행
  • -p : 외부 접속을 위해 포트 연결
  • mongo –auth : 보안접근을 위해 사용

docker run –name mongodb_server -v /home/test/mongodb/db:/data/db -d -p 16010:27017 mongo –auth

그리고 MongoDB는 기본적으로 설정파일을 읽지 않는다.
만약 설정파일이 필요하다면 /etc/mongod.conf.orig 파일을 참고하자. (이는 버전마다 상이하다.)
만약 설정파일을 통해 MongoDB를 로딩할 것이라면 아래와 같이 명령어를 수행한다.

1
2
3
docker run -d --name mongodb-test -p 17017:27017 \
-v /home/sa/data/mongod.conf:/etc/mongod.conf \
-v /home/sa/data/db:/data/db mongo --config /etc/mongod.conf

참고 StackOverFlow

3. Bash 접근 및 Mongo 접속

docker exec -it mongodb_server bash
mongo

위 명령어로 bash 접근하고 mongo에 접속한다.

4. 관리자 계정 생성

아래의 명령어를 통해서 관리자를 생성한다.
먼저 admin DB를 선택한다.

use admin

관리자로 사용할 계정을 만들어준다. (아래의 예제에서는 admin)

db.createUser({
user: “admin”,
pwd: “admin”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
})

5. 관리자로 로그인 및 일반 계정 생성

MongoDB의 shell로 접근하여 관리자로 접근한다. (4에서 생성한 정보 참고)

mongo -u “admin” -p “admin” –authenticationDatabase “admin”

명령어를 통해 접근하고 사용할 데이터베이스 생성 및 계정을 생성해준다.
위 명령어의 옵션 설명은 다음과 같다.

  • -u : 접근 id
  • -p : 암호
  • – authenticationDatabase : 해당 계정이 권한을 가진 DB 이름

접근 후 아래의 명령어를 사용한다.

use testdb
db.createUser({ user: “tester”, pwd: “1234”, roles: [“dbAdmin”, “readWrite”] })

접근 후 use를 통해 사용할 데이터베이스를 만들어준다. (use 명령어는 존재하면 사용, 없는 경우 생성한다.)
그리고 해당 데이터베이스에서 사용할 계정을 만들어준다.


기타 사항

위의 내용에서 참고하여 생성 후 접근 테스트를 해본다.
다음 포스팅에서는 MongoDB의 GUI Tool인 compass에 대해 포스팅을 해볼 예정이다.