docker-compose
- mongo2, mongo3 는 주석으로 스탠드 얼론
version: "3.9"
networks:
infra:
external: true
services:
mongo1:
image: mongo:latest
hostname: mongo1
container_name: mongo1
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=test
- MONGO_INITDB_ROOT_PASSWORD=asdf
ports:
- 27017:27017
volumes:
- ./data/db/replica/mongo1:/data/db
- ./mongodb.key:/etc/mongodb.key
command:
- '--replSet'
- 'myReplicaSet'
- '--keyFile'
- '/etc/mongodb.key'
- '--bind_ip_all'
networks:
- infra
# mongo2:
# image: mongo:latest
# hostname: mongo2
# container_name: mongo2
# restart: always
# environment:
# MONGO_INITDB_ROOT_USERNAME: root
# MONGO_INITDB_ROOT_PASSWORD: root!
# depends_on:
# - mongo1
# ports:
# - 27018:27017
# volumes:
# - ./data/db/replica/mongo2:/data/db
# - ./mongodb.key:/etc/mongodb.key
# command:
# - '--replSet'
# - 'myReplicaSet'
# - '--keyFile'
# - '/etc/mongodb.key'
# - '--bind_ip_all'
# mongo3:
# image: mongo:latest
# hostname: mongo3
# container_name: mongo3
# restart: always
# environment:
# MONGO_INITDB_ROOT_USERNAME: root
# MONGO_INITDB_ROOT_PASSWORD: root!
# depends_on:
# - mongo2
# ports:
# - 27019:27017
# volumes:
# - ./data/db/replica/mongo3:/data/db
# - ./mongodb.key:/etc/mongodb.key
# command:
# - '--replSet'
# - 'myReplicaSet'
# - '--keyFile'
# - '/etc/mongodb.key'
# - '--bind_ip_all'
mongo-express:
container_name: mongo-express
image: mongo-express
restart: always
ports:
- 9000:8081
environment:
- ME_CONFIG_MONGODB_SERVER=mongo1
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=true
- ME_CONFIG_MONGODB_ADMINUSERNAME=test
- ME_CONFIG_MONGODB_ADMINPASSWORD=asdf
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_AUTH_USERNAME=test
- ME_CONFIG_MONGODB_AUTH_PASSWORD=asdf
#- ME_CONFIG_BASICAUTH_USERNAME=${MONGO_EXPRESS_USERNAME}
#- ME_CONFIG_BASICAUTH_PASSWORD=${MONGO_EXPRESS_PASSWORD}
networks:
- infra
컨테이너 내에서 키파일 생성
openssl rand -base64 756 > /mongodb.key
자동 키 생성 및 레플리카셋 몽고 실행
#!/bin/bash
openssl rand -base64 756 > ./mongodb.key
chmod 400 ./mongodb.key
chown 999:999 ./mongodb.key
docker compose up --build -d
docker compose logs -f
mongo1 컨테이너 접속 후 아래 커맨드 실행
- mongosh
- use admin
- db.auth(“test”,“asdf”)
- 레플리카 셋 초기화
rs.initiate({
_id: "myReplicaSet",
members: [
{_id: 0, host: "mongo1"}
]
});
- rs.status()
유저 생성
db.createUser({
user: "hexagonal",
pwd: "eogksalsrnr",
roles:[{role:"dbAdmin", db:"hub-local"}, {role:"readWrite", db:"hub-local"}, {role:"dbAdmin", db:"hub-develop"}, {role:"readWrite", db:"hub-develop"}]
})
db.createUser({
user: "hexagonal",
pwd: "eogksalsrnr",
roles:[{role:"dbAdmin", db:"hub-develop"}, {role:"readWrite", db:"hub-develop"}]
})