[Docker] docker에서 DB 사용해보기 #mongodb 설치 #외부에서 db 접속
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

이번 포스팅에서는 DB를 docker에서 구축하여 사용해보겠습니다

이전 포스팅인

[DOCKER] docker를 사용해 보자: 이미지와 컨테이너 #2

 

[DOCKER] docker를 사용해 보자: 이미지와 컨테이너 #2

안녕하세요 😉 유유자적한 개발자 유로띠 입니다 😀 docker 두 번째 시간입니다 ✌ 오늘 포스팅은 docker를 사용해 보는 시간이니 docker가 설치되어 있어야 합니다 이전 Docker 설치를 안 보신 분들��

msyu1207.tistory.com

에서 기본적인 docker 명령어를 배워봤기 때문에

오늘 해볼 DB 구축은 어렵지 않을 거라 생각됩니다

 

👏👏👏👏

 

 

이번 포스팅에서는

✅ docker에서 DB 만들기

✅ 외부 docker에서 DB 접속하기

에 대해서 알아보겠습니다

 

👏👏👏👏

 

🎉 DB in docker 


📢 docker에서 DB 구축하기

 

 

 

 

✅ mongodb 실행

 

docker run 명령어를 이용하여 빠르게 docker의 DB를 만들어 보겠습니다

저는 mongodb의 4.2 버전을 구축해 보겠습니다

docker run -d --name mongo-db -v /data:/data/db -p 27017:27017 mongo:4.2
-d : Detached 모드
컨테이너를 백그라운드에서 동작하는 애플리케이션을 실행할 때 설정합니다

-v : 볼륨
볼륨을 설정하지 않고 컨테이너를 삭제하면 컨테이너에 저장되어있는 DB의 정보도 삭제되어 복구할 수가 없습니다
따라서 호스트의 디렉토리와 컨테이너의 디렉토리를 공유시켜 줍니다
여기서는 호스트의 /data 와 컨테이너의 /data/db를 연결하였습니다
정확히는 호스트의 디렉토리를 컨테이너의 디렉토리에 마운트를 한다고 보시면 됩니다

-p : 포트
[호스트 port]:[컨테이너 port]
컨테이너의 port로 접근하기 위해서 docker의 포트 포워딩으로 연결합니다
여기서는 호스트의 27017 포트로 접근하면 컨테이너의 27017 포트로 포워딩합니다

 

 

 

✅ mongodb 컨테이너 접속

 

detached 모드로 생성했기 때문에 생성된 컨테이너에 직접 접속하기 위해서는 bash를 활성화하여 접속하도록 합니다

저번 포스팅에서 배웠던 exec를 이용하여 bash를 활성화하여 접속합니다

docker exec -it mongo-db /bin/bash

 

접속 후 env를 사용하여 db의 정보를 확인해 봅니다

 

✅ mongodb 접속

 

컨테이너 내부에서 mongodb로 접속해 보겠습니다

mongodb 생성 시 별도의 제한을 설정하지 않았기 때문에 해당 명령어를 이용하여 바로 접속 가능합니다

#mongo

 

 


📢 외부 컨테이너에서 DB 접속

 

이번엔 mongo server를 만들어서 외부 컨테이너에서

방금 구축한 mongo db에 접속해 보도록 하겠습니다

 

✅ 컨테이너 생성

 

docker run -i -t --name mongo-server --link mongo-db:mongo-db mongo:4.2 /bin/bash
--link : 링크
컨테이너에서 다른 컨테이너로 접근할 때 별명(alias)으로 접근하도록 설정합니다

 

 

📍 환경 확인

 

이 중에서 우리가 써야 할 정보는 $MONGO_DB_PORT_27017_TCP_ADDR,

$MONGO_DB_PORT_27017_TCP_PORT 입니다

#env

 

✅ 외부에서 DB 접속

 

새로 생성한 server에서 외부 컨테이너의 mongodb로 접속해 보겠습니다

mongo $MONGO_DB_PORT_27017_TCP_ADDR:$MONGO_DB_PORT_27017_TCP_PORT

정상적으로 외부 컨테이너에서 접속이 가능합니다 😄

 

 

💡 TIP. 컨테이너의 IP 확인 방법

 

docker inspect 명령어를 사용하면 컨테이너가 할당된 IP를 알 수 있습니다

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [컨테이너 이름]

 


📢마무리

 

이번 포스팅에서는

간단하게 docker에서 DB를 구축해 보았습니다 😉

하지만 운영환경에서 작업을 한다면 기존 dump 파일을 마운트하고

DB 관련 설정을 해줘야 하는 등의 처리가 필요합니다 😮

 

그래서 다음 포스팅에서는 

docker를 더 유용하게 사용하기 위한

dockerfiledocker compose에 대해서 포스팅할까 합니다

👏👏👏

 

반응형