도커 mongo db, mongo db express 연동하기(볼륨생성, 네트워크 구성)

 1. 도커 구성도

정확한 관계는 애매하긴한데 대충 이렇다.



2. 사용 컨테이너


MongoDB : DB
공식 페이지 참고 : https://hub.docker.com/_/mongo-express

Mongo Express : 웹 MongoDB 관리자 인터페이스
공식 페이지 참고 : https://hub.docker.com/_/mongo

3. 컨테이너간 커뮤니케이션

컨테이너는 서로 격리된 환경이기 때문에 
- 네트워킹 : 서비스가 listening 중인 포트를 통해 통신 프로토콜 사용
- 공유디스크 : 호스트의 공유 디스크를 통해
두 가지 방법으로 커뮤니케이션할 수 있다.

4. 도커 네트워크 설정

컨테이너간 네트워킹을 위해선 도커내부에 가상 네트워크를 설치해준다.
PS C:\Users> docker network create -d bridge mongo-net

PS C:\Users> docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
c162ff4844f3   mongo-net   bridge    local



5. 데이터 지속성을 위한 volume 생성

 요약 : 윈도우 OS인 경우, 몽고db 이미지(리눅스기반)랑 파일시스템이 안 맞음
 - 권장 : docker volume 을 생성
 - 대안 : windows-based 몽고DB 도커 이미지를 다운로드
 
volume 생성 명령어 : docker volume create mongo-vol

WARNING (Windows & OS X): When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (docs.mongodb.org and related jira.mongodb.org bug). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see docker volume create). Alternatively you can use the Windows-based images on Windows.

The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above:

  1. Create a data directory on a suitable volume on your host system, e.g. /my/own/datadir.

  2. Start your mongo container like this:

    $ docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo


6. 실행

mongodb 컨테이너 실행 명령어 : powershell 에서 입력하면 됨

docker run -d --network mongo-net -p 27017:27017 -v mongo-vol --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin mongo


mongo-express 컨테이너 실행 명령어 :

docker run -d --network mongo-net --name mongo-express -p 8081:8081 -e ME_CONFIG_OPTIONS_EDITORTHEME="ambiance" -e ME_CONFIG_MONGODB_SERVER="mongodb" -e ME_CONFIG_MONGODB_ADMINUSERNAME="admin" -e ME_CONFIG_MONGODB_ADMINPASSWORD="admin" mongo-express



7. 접속



댓글