[CI/CD] Docker에 MongoDB 설치

RUNGOAT·2023년 9월 5일
1

CI/CD

목록 보기
11/11

1️⃣   Docker에 MongoDB 설치 및 실행

1.1. mongo 설치

docker pull mongodb/mongodb-community-server

1.2. 27017 포트로 실행, Volumn 지정

docker run -v db-data:/mongo -d -p 27017:27017 --name mongo mongodb/mongodb-community-server:5.0.17-ubuntu2004
  • 27017:27017 : 포트 포워딩 설정

  • -v data:/db/mysql : /var/lib/docker/volumes/ 경로 안에 data 디렉토리가 생긴다.

    • 접근할려면
      1. sudo ls /var/lib/docker
      2. sudo su

1.3. 정상적으로 설치되었는지 확인

✔ container 접근

docker exec -it mongo mongosh

✔ 테스트

> db.runCommand(
   {
      hello: 1
   }
)

✔ 정상적인 출력값

{
   isWritablePrimary: true,
   topologyVersion: {
      processId: ObjectId("63c00e27195285e827d48908"),
      counter: Long("0")
},
   maxBsonObjectSize: 16777216,
   maxMessageSizeBytes: 48000000,
   maxWriteBatchSize: 100000,
   localTime: ISODate("2023-01-12T16:51:10.132Z"),
   logicalSessionTimeoutMinutes: 30,
   connectionId: 18,
   minWireVersion: 0,
   maxWireVersion: 20,
   readOnly: false,
   ok: 1
}

2️⃣   외부 접속 허용

2.1. mongod.conf 파일 수정

# mongod.conf
# ...

net:
  port: 27017
  bindIp: 0.0.0.0

# ...

security:
  authorization: 'enabled'

# ...
  • docker container 내부에서 파일을 수정할려면 권한이 필요한데 sudo 명령어를 인식하지 못한다.

  • container 외부에서 mongod.conf 파일을 만들어서 container 내부의 conf 파일을 덮어쓴다.

✔ mongod.conf 파일 생성 아래 내용 추가

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: 'enabled'

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

✔ mongo container 내부로 복사한다.

docker cp mongo.conf mongo:/etc/mongod.conf.orig

✔ 정상적으로 내용이 덮어쓰였는지 확인

docker exec -it mongo /bin/bash

cat etc/mongod.conf.orig

2.2. 포트 허용

✔ container 외부에서 해당 명령어 입력

sudo ufw allow 27017

✔ 포트 허용 확인

sudo ufw status

3️⃣   root 계정 생성

3.1. mongo container 접속

docker exec -it mongo /bin/bash

> mongo	# 첫 접근 시에는 mongo만 입력해도 된다.

3.2. MongoDB root 권한 계정 생성

> show databases;
admin   0.000GB
config  0.000GB
local   0.000GB

> use admin;
switched to db admin

> db;
admin

> db.createUser({user: "아이디", pwd: "비밀번호", roles:["root"]});

exit;

다시 mongo 명령어로 mongosh 접근할려고 하면 에러 발생한다.

# mongo	-> 에러 발생(인증되지 않는 사용자 접근 불가)
# 아래와 같이 명령어를 입력해야 한다.

> mongo -u 아이디 -p 비밀번호

4️⃣   사용할 데이터베이스, 계정 생성

4.1. test 데이터베이스 생성

> use test;
> db;
test

4.2. testuser 계정 생성

> db.createUser({user: "testuser", pwd:"testuser", roles:["readWrite"]});
Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }

4.3. 사용자 목록 확인

> db.getUsers();

📌 참고

profile
📞피드백 너무나 환영

0개의 댓글