이번에 야심차게
개인 프로젝트를 진행해보려고한다
이미 대학원 연구실 과제에
개인 연구에
개발 외주 작업에
대학원 수업으로
초특급 바쁘긴하지만..
그래도 약 1년전부터
해보고싶다고 마음 먹었던건데
시작이 반이라고
개발환경이라도 셋팅해놓으면
언젠간 차근차근 하지 않을까 생각했다 ㅎㅎ
내가 기획하고 있는 프로젝트는
그렇게 가볍지도 않지만
또 엄청 무겁게 할 생각도 없는
개인 프로젝트이기에
어떻게 할까 고민했다가
backend: Spring Boot + jpa
DB: MongoDB
frontend: React + tailwind css
로 해주기로 했다
처음에는 backend를
node.js로 해주려고했다가
사실 가장 익숙한게 spring framework이기도 했고
spring에서 jap를 써보고 싶었기 때문이다
DB를 MongoDB를 선택한 이유는
jpa를 사용할 때
훨씬 더 간편해질뿐만아니라
데이터 작업에 있어서
그렇게 schema가 중요하지 않다고 생각했고
geospatial을 지원하는 mongoDB는
카카오 모빌리티에서 채택한 DB기에..
공간정보전공자에
geospatial 관련 연구를 하고 있는 나에게
mongoDB를 한 번 써보고 싶어서
있어서 MongoDB를 선택했다
그럼 시작이 반이라고
일단 MongoDB부터
다운받아서 실행해보자
나는 docker 환경에서 실행해주기로했다
docker-compose를 이용하면
정말 간단해서 늘 그렇게 해주는 편이다
우선 로컬 환경에서
docker와 docker-compose가
설치되어있다고 가정한다
만약 없다면
https://docs.docker.com/engine/install/
얘를 해준다
나는 docker desktop을 설치했는데
그것만 설치하면
docker랑 docker-compose가
함께 설치된다
docker-compose는
yml 파일에 내가 원하는 셋팅만 적어주면
자동으로 docker가 빌드되게 해준다
따라서 yml이 중요한데
나는 아래와 같이 yml 파일을 작성해줬다
yml파일의 이름은
docker-compose.yml로 해줘야한다
version: '3.8'
services:
mongodb:
image: mongo:latest
container_name: mongodb
ports:
- 27017:27017
volumes:
- ./data:/data
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=root
mongo-express:
image: mongo-express
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=root
- ME_CONFIG_MONGODB_ADMINPASSWORD=root
- ME_CONFIG_MONGODB_SERVER=mongodb
간단하게 설명하자면
services에 보면 mongodb와 mongo-express
2개가 있는데
이 2개의 Image를 다운받아서
컨테이너 내부에서 실행해줄거라는 뜻이다
mongo-express는
mongodb를 웹에서
관리할 수 있게 해주는 관리프로그램이다
아래처럼 웹에서
나의 mongodb를 관리해줄 수 있다
datagrip같은 DB관리 시스템이 없다면
해주는 것이 좋다
mongodb는 보통 27017에 띄워주고
mongo-express는 8081에 띄워주기 때문에
port넘버를 설정해주고
volumes에는 data를 저장할 path를
지정해주는데 원하는 경로를 적으면 된다
그리고 나머지는 영어를 읽어보면 알겠지만
DB의 username과 password를
설정해주는 것이다
이렇게 docker-compose.yml을
다 작성해줬다면
docker-compose.yml이 있는 경로에 들어가
docker-compose up -d
위 명령어를 실행해주자
-d를 붙이면
위와 같이 terminal의 실행문(?)이
종료되며 계속해서 해당 terminal을 사용할 수 있고
docker-compose up --build
를 사용하면 실행해준 터미널에서
계속해서 실행되며
내부의 로그를 확인할 수 있다
이렇게 해주면
docker desktop에서
mongodb container가 정상적으로
실행되고 있는 것을 확인할 수 있다
terminal에서 확인하려면
docker ps
명령어를 입력하면
현재 실행 중인 container를 볼 수 있다
실행 중이지 않은 것까지 보고싶다면
docker ps -a
뒤에 옵션으로 -a를 붙여주면 된다
all의 약자다
이렇게 컨테이너가 실행된걸
확인해줬으면
잘 실행되는지 보기 위해서
mongo-express에 먼저 접속해보자
localhost:8081로 들어가준다
mongodb를 처음 설치하면
admin, config, local
3개의 db가 미리 생성되어있다
위와같은 웹이 잘 뜬다면
도커 빌드 성공!
mongo-express에서 위의
create database를 이용해서
새로운 db를 만들어줘도되고
각자 편한 DB 관리 시스템을 이용해줘도 된다
나는 datagrip에 절여져있는 사람이라
datagrip을 이용해줬다
datagrip에서
새로운 datasource 추가를
선택한 뒤
mongoDB를 선택하고
port번호, username, password를 입력해준다
이런 항목이 생성된다면
연동 성공
이제 datagrip에서 쿼리 콘솔을 사용해서
db를 생성해보자
새롭게 생성할 db이름은
checkitout이었기에
db이름과 함께 쿼리문을 작성해준다
use checkitout;
이렇게 쿼리를 입력한뒤 실행해주자
그럼 하단에
switched to db checkitout
과 같이 뜰 것이다
그럼 새로운 db가 생성되었고
현재 새롭게 생성된 db를
사용하고있다는 뜻이다
이제 collection을 만들어보자
collection은 RDBS에서
table과 같은 역할을 한다
나는 맨 처음에 User정보를 저장하는
user라는 collection을 만들어 주고싶어서
db.createCollection("users");
이렇게 쿼리문을 작성하고 실행했다
성공적으로 실행되었다면
"users"라는 collection이 생긴 것이다
새로고침을 했을 때
위와 같이 생성해준 collection이
뜬다면 성공!
mongoDB도
noSQL도 처음이지만
어찌저찌 db셋업은 잘 된 것 같아서
...
순조로운 시작인 것 같다
'기술 > DB' 카테고리의 다른 글
[neo4j] 자체 개발 plugin implement하기(docker) (0) | 2024.07.31 |
---|