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_DATABASE=mydb
- MONGO_INITDB* 옵션을 지정하여 비밀번호, 데이터베이스를 초기화 한다.
restart
- docker 엔진 실행시 자동으로 이미지를 실행한다.volumes
을 설정하여 데이터를 영속화한다.
docker-compose 실행
docker-compose up -d
mongo
이미지가 없는 경우 dockerhub에서 다운로드를 진행한다.
mongodb 컨테이너 실행 확인
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a71c89dfbcd mongo "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 0.0.0.0:27017->27017/tcp mongodb
컨테이너에 접속하여 mongo 실행 확인
docker exec -it mongodb /bin/bash
root@2a71c89dfbcd:/# mongo -u root -p 1234
MongoDB shell version v5.0.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("5e3bdb9c-d27c-4b7e-8d0e-8786e1d9dee8") }
MongoDB server version: 5.0.5
- 사용자/비밀번호를 명시하여 접속한다.
1. database 변경
> use mydb
switched to db mydb
2. Collection 생성
> db.createCollection('book')
{ "ok" : 1 }
3. 데이터 입력
> db.book.insertOne({name:"hello mongo", author:"choi"})
{
"acknowledged" : true,
"insertedId" : ObjectId("61e374229cbbcefe0d6d744b")
}
> db.book.insertMany([{name:"hello java", author:"kim"}, {name:"hello docker", author:"lee"}])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("61e374779cbbcefe0d6d744c"),
ObjectId("61e374779cbbcefe0d6d744d")
]
}
4. 데이터 조회
> db.book.find().pretty()
{
"_id" : ObjectId("61e374229cbbcefe0d6d744b"),
"name" : "hello mongo",
"author" : "choi"
}
{
"_id" : ObjectId("61e374779cbbcefe0d6d744c"),
"name" : "hello java",
"author" : "kim"
}
{
"_id" : ObjectId("61e374779cbbcefe0d6d744d"),
"name" : "hello docker",
"author" : "lee"
}
5. 데이터 업데이트
> db.book.updateOne( { _id: ObjectId("61e374779cbbcefe0d6d744d") }, { $set: { author: "lee docker" } } )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
업데이트 데이터 조회
> db.book.find({name:"hello docker"})
{ "_id" : ObjectId("61e374779cbbcefe0d6d744d"), "name" : "hello docker", "author" : "lee docker" }
6. 데이터 삭제
> db.book.deleteOne({name:"hello docker"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.book.find()
{ "_id" : ObjectId("61e374229cbbcefe0d6d744b"), "name" : "hello mongo", "author" : "choi" }
{ "_id" : ObjectId("61e374779cbbcefe0d6d744c"), "name" : "hello java", "author" : "kim" }
반응형
'DevOps > Docker' 카테고리의 다른 글
문제 해결: Error: Error loading shared library /app/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: Exec format error (0) | 2023.02.03 |
---|---|
Jenkins로 Spring boot 배포 후 반영 안되는 문제. (0) | 2023.02.02 |
Docker container 정지 & 실행(재실행) 방법 ( stop, start ) (2) | 2022.11.23 |
Docker 오라클 이미지 생성 및 실행 21c ( 공식 github 제공 sh 활용 ) (1) | 2022.05.31 |
Docker - MySql 8 개발환경, docker-compose로 간단하게 구성하기 (0) | 2022.01.05 |