[docker-compose] MongoDB Mongo Express Develop Tip

MongoDB 를 구축하고 이것의 UI를 다음과 같이 보여주는,

Mongo Express를 docker-compose 를 꾸며보는 것은 아주 흥미로우면서도,
처음 docker를 접할 때 혹은 운영을 시작해 볼 때 좋은 예시가 될 수 있습니다.

간단히 가상머신으로 동작하는 Phton OS 에서 mongoDB와 mongo Express를 이용한
docker-compose 를 돌려보려고 합니다만, 할 때마다 약간 시행착으로를 거칩니다.
그래서 또 정리해 봅니다.

다음은 특정 폴더를 만들어 놓았다고 가정하고 그 안에서 실행시킵니다.


1) Docker Compose 파일 작성


다음의 내용으로 docker-compose.yaml 을 저장합니다.

version: '3'

services:
  mongo:
    image: mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=project
    volumes:
      - ./mongo-storage:/data/db

  mongo-express:
    image: mongo-express
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongo
      - ME_CONFIG_MONGODB_PORT=27017
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
      - ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USER}
      - ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD}
      - ME_CONFIG_MONGODB_AUTH_DATABASE=admin
      - ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
      - ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
      - ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
      - ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
    depends_on:
      - mongo
    ports:
      - "27018:8081"


그 다음 


2) .env 환경 변수 지정


.env 라는 파일에

MONGO_ROOT_USER=devroot
MONGO_ROOT_PASSWORD=devroot
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev

의 내용을 저장합니다.
(물론 암호 등 자신의 것으로 수정합니다)


3) 방화벽 설정


그 다음 외부 노출용 포트인 27017, 27018의 포트를 다음과 같이 엽니다.

echo "iptables -I INPUT 1 -p tcp --dport 27017 -j ACCEPT" >> /etc/systemd/scripts/iptables
echo "iptables -I INPUT 1 -p tcp --dport 27018 -j ACCEPT" >> /etc/systemd/scripts/iptables
systemctl restart iptables


4) 데이터 폴더 설정


그 다음 mongoDB의 볼륨마운트 폴더를 생성하여 UID, GID 를 수정해 줍니다.

mkdir mongo-storage
chown -R 999:999 mongo-storage


5) 서비스 시작 및 종료


이제는 다음과 같이 해당 서비스를 시작합니다.

docker-compose up -d

또는 다음과 같이 해당 서비스를 종류합니다.

docker-compose down

이제 외부에서 이 Photon VM으로 27018 포트로 브라우저에서 접근하면
암호를 물어보는데, .env에 있는 것을 넣어주면 (위의 예시에서는 dev, dev)
위와 같은 화면이 뜨면 정상적으로 MongoDB 관리가 가능합니다.

참고:
Host인 Mac의 파일을 파일공유(Samba) 시키고 이를 Photon VM 에서
cifs로 마운트하여 사용한 폴더를 위에 작업폴더로 이용해 보았는데,
이 경우에는 UID 및 GID를 변경할 수 없어 내부 오류가 발생했습니다.


어느 분께는 도움이 되셨기를 ..


덧글

댓글 입력 영역

구글애드텍스트