728x90
이번 포스트에는 AWS EC2 ubuntu 20.04 lts에 Docker를 설치하고, mongodb를 설치 및 연결해보겠습니다.
NoSQL Booster for MongoDB가 없으신 분은 아래 링크를 통해 다운로드 받아주세요.
https://nosqlbooster.com/downloads
1. EC2 생성
EC2 에서 20.04 LTS ubuntu 생성해줍니다.
공식 홈페이지를 찾아보면 MongoDB docker로 띄우기위해 최소로 필요한 서버의 크기는 2vCore 와 4GB mem정도로 나옵니다.
2. Docker 설치
// apt 인덱스 업데이트
$ sudo apt-get update
// repository over HTTPS를 사용하기 위한 패키지 설치
$ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
// GPG Key를 추가하고 확인
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
// 저장소 추가하고 apt 인덱스 업데이트
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
// Docker 설치
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
// Docker 서비스 시작
$ sudo systemctl start docker
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service
// Docker 확인
$ sudo docker run hello-world
docker 설치 확인
sudo systemctl status docker
3. Docker를 이용해 MongoDB Container 띄우기
# mongodb 이미지 가져오기
sudo docker pull mongodb/mongodb-community-server:5.0.19-ubuntu2004
- Container 이름은 mongo
- -d 를 통해 백그라운드(daemon)으로 실행
- -p 로 ec2에서의 포트:컨테이너에서의 포트 지정
- -e로 환경변수 MONGODB_INITDB_ROOT_USERNAME, MONGO_INITDB_ROOT_PASSWORD 지정하기(connection 시 계정/비밀번호 인증 수단 추가하기)
- mongodb/mongodb-community-server:5.0.19-ubuntu2004 이미지 지정하기
# 도커 볼륨 생성
sudo docker volume create volume_name
# 도커 실행시키기(컨테이너 띄우기)
sudo docker run --name mongo -d -p 17017:27017 -e MONGO_INITDB_ROOT_USERNAME=test -e MONGO_INITDB_ROOT_PASSWORD='test!!' -v volume_name:/data/db mongodb/mongodb-community-server:5.0.19-ubuntu2004
# container 실행 확인
sudo docker ps
-e MONGO_INITDB_ROOT_PASSWORD='test!!' 지정한 부분 앞의 ID는 ''로 감싸주지 않고 비밀번호만 ''로 감싸준 이유
→ !!는 마지막으로 입력한 명령어를 다시 사용하는 단축 명령어이므로, 원하는 형태의 command를 날릴 수 없기 때문에 !!를 password에 사용하고 싶은 경우, ''로 감싸주어야 함
또한, 비밀번호에 @가 들어가는경우, mongodb 연결을위해 host string을 입력할 때,
mongodb://username:password@hostname:port/database 의 형태에서 @가 password, hostname부분을 구분지어주는데, @@로 인해 패스워드 구분이 잘 안되는 문제가 발생함
4. SG(Security Group) 설정
AWS SG(Security Group)에서 모든 IP와 포트를 허용해줍니다.(테스트니까)
5. NoSQL Booster 연결하기
EC2서버와 같은 VPC에 있다면, private IP를 이용해도 되고, 현재는 테스트이기 때문에 public ip를 통해 접속해보겠습니다. 현재 할당 받은 public ip로 접속 string을 가져옵니다.
잘 연결되는 것을 확인할 수 있습니다.
참조:
https://doc.skill.or.kr/docker
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-community-with-docker/
https://stackoverflow.com/questions/34559557/how-to-enable-authentication-on-mongodb-through-docker
728x90
'DataBase > NoSQL' 카테고리의 다른 글
[NoSQL] MongoDB cluster 구성 정리 (feat production, NCP) (0) | 2024.02.26 |
---|---|
[NoSQL] MongoDB 집계(Aggregation)1 (0) | 2021.01.21 |
[NoSQL] MongoDB 쿼리 언어 총정리2 (0) | 2021.01.20 |
[NoSQL] MongoDB 쿼리 언어 총정리1 (1) | 2021.01.20 |
[NoSQL] MongoDB Index 생성,예제,효율확인 (0) | 2021.01.19 |
댓글