티스토리 뷰

728x90

docker-compose.yml

docker-compose.yml 파일을 생성 후 다음과 같이 작성해준다.

 

version: '3.8'
services:
  mongodb:
    image: mongo
    container_name: my_mongo
    restart: always
    ports:
      - 27017:27017
    volumes:
      - my_volume:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root 
      - MONGO_INITDB_DATABASE=my_schema

volumes:
  my_volume:

 

이때 docker에 의해 관리되는 volume으로 생성하기 위해서는 services와 같은 level에서 volumes를 통해 매칭해줄 volume을 declaration을 해주어야 한다.

services: <--- top level
  mongodb:
	...
    volumes:
      - my_volume:/data/db
...
volumes: <--- top level
  my_volume:

 

만약 volumes를 선언해주지 않을 경우 다음과 같은 에러 로그를 보게 된다.

ERROR: Named volume "mongodb:/data/db:db" is used in service "mongo" but no declaration was found in the volumes section

 

docker의 volume을 사용하지 않고 로컬 스토리지를 직접 매핑하고 싶다면 다음과 같이 작성하면 된다.

docker에서는 relative path 기능을 지원하기에 ./로 바로 접근이 가능하다.

services:
  mongodb:
	...
    volumes:
      - ./my_volume:/data/db
...
----삭제-----
volumes:
  my_volume:
----삭제-----

 

다음의 커맨드를 실행해서 컨테이너를 띄워준다.

docker-compose up -d

 

컨테이너에 접속하고 실행 여부를 확인한다.

(중요) mongo command가 deprecated되어 더 이상 사용할 수 없다. mongosh 커맨드를 이용한다.

$ docker exec -it my_mongo /bin/sh
# mongosh -u root -p root

 

 

레퍼런스

https://youngwonhan-family.tistory.com/entry/Docker-mongodb-docker-compose-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EB%8D%B0%EC%9D%B4%ED%84%B0-CRUD-%EC%98%88%EC%A0%9C

 

몽고디비(MongoDB) docker-compose 설치 및 데이터 CRUD 예제

docker-compose.yml version: '3.8' services: mongodb: image: mongo container_name: mongodb restart: always ports: - 27017:27017 volumes: - ./mongodb:/data/db environment: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=1234 - MONGO_INITDB_DAT

youngwonhan-family.tistory.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함