Docker에서 MongoDB 컨테이너 시작시 초기 데이터 가져오기
소개
Docker에서 MongoDB를 컨테이너를 시작하고 데이터를 확인할 때까지 최소한의 구성입니다.
하고 싶은 일
디렉토리 구성
.
├── docker-entrypoint-initdb.d
│ ├── 1-mongo-init.js
│ ├── 2-mongo-init.sh
│ └── staffs.json
└── docker-compose.yml
각 파일의 내용
docker-compose.yml
MONGO_INITDB_DATABASE에 지정된 이름으로 데이터베이스가 작성됩니다.
docker-compose.ymlversion: '3.3'
services:
mongo:
image: mongo
container_name: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: mongo
MONGO_INITDB_ROOT_PASSWORD: mongo
MONGO_INITDB_DATABASE: mongo_example
TZ: Asia/Tokyo
ports:
- 27018:27017
volumes:
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
docker-entrypoint-initdb.d/1-mongo-init.js
사용자 작성과 함께 컬렉션을 작성하고 있습니다.
이 예제에서는 staffs 컬렉션을 예제로 만듭니다.
docker-entrypoint-initdb.d/1-mongo-init.jsvar user = {
user: "mongo",
pwd: "mongo",
roles: [
{
role: "dbOwner",
db: "mongo_example"
}
]
};
db.createUser(user);
db.createCollection('staffs');
docker-entrypoint-initdb.d/2-mongo-init.sh
작성한 사용자, 암호, 데이터베이스, 콜렉션 및 가져올 JSON 파일을 지정합니다.
docker-entrypoint-initdb.d/2-mongo-init.shmongoimport -u mongo -p mongo --db mongo_example --collection staffs --file /docker-entrypoint-initdb.d/staffs.json --jsonArray
docker-entrypoint-initdb.d/staffs.json
staffs 컬렉션으로 가져올 데이터를 JSON 파일로 준비합니다.
docker-entrypoint-initdb.d/staffs.json[
{
"id" : 1,
"name" : "佐藤"
},
{
"id" : 2,
"name" : "鈴木"
},
{
"id" : 3,
"name" : "田中"
}
]
실행
docker-compose로 시작합니다.
$ docker-compose up -d
Creating network "mongodb_default" with the default driver
Creating mongo ... done
GUI 클라이언트로 확인
1. MongoDB Compass 다운로드
MongoDB Compass 에서 Platform을 선택하고 Download 버튼을 클릭합니다.
2. 연결
Paste your connection string에 다음 연결 정보를 입력하고 CONNECT 버튼을 클릭합니다.
mongodb://mongo:mongo@localhost:27018
3. 결과
staff 컬렉션으로 데이터를 가져올 수 있는지 확인할 수 있습니다.
version: '3.3'
services:
mongo:
image: mongo
container_name: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: mongo
MONGO_INITDB_ROOT_PASSWORD: mongo
MONGO_INITDB_DATABASE: mongo_example
TZ: Asia/Tokyo
ports:
- 27018:27017
volumes:
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
var user = {
user: "mongo",
pwd: "mongo",
roles: [
{
role: "dbOwner",
db: "mongo_example"
}
]
};
db.createUser(user);
db.createCollection('staffs');
mongoimport -u mongo -p mongo --db mongo_example --collection staffs --file /docker-entrypoint-initdb.d/staffs.json --jsonArray
[
{
"id" : 1,
"name" : "佐藤"
},
{
"id" : 2,
"name" : "鈴木"
},
{
"id" : 3,
"name" : "田中"
}
]
docker-compose로 시작합니다.
$ docker-compose up -d
Creating network "mongodb_default" with the default driver
Creating mongo ... done
GUI 클라이언트로 확인
1. MongoDB Compass 다운로드
MongoDB Compass 에서 Platform을 선택하고 Download 버튼을 클릭합니다.
2. 연결
Paste your connection string에 다음 연결 정보를 입력하고 CONNECT 버튼을 클릭합니다.
mongodb://mongo:mongo@localhost:27018
3. 결과
staff 컬렉션으로 데이터를 가져올 수 있는지 확인할 수 있습니다.
mongodb://mongo:mongo@localhost:27018
Reference
이 문제에 관하여(Docker에서 MongoDB 컨테이너 시작시 초기 데이터 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkamizuru/items/c1c7c99c8102ca0a75ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)