안녕하세요 😉
유유자적한 개발자 유로띠 입니다 😀
이번 포스팅에서는 DB를 docker에서 구축하여 사용해보겠습니다
이전 포스팅인
[DOCKER] docker를 사용해 보자: 이미지와 컨테이너 #2
에서 기본적인 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를 더 유용하게 사용하기 위한
dockerfile과 docker compose에 대해서 포스팅할까 합니다
👏👏👏
'Programming > Docker' 카테고리의 다른 글
[DOCKER] docker를 사용해 보자: 이미지와 컨테이너 #2 (0) | 2020.05.22 |
---|---|
[DOCKER] docker를 설치해보자 #1 (0) | 2020.05.17 |