- Tạo network:
docker network create --driver bridge schat_network
1. docker-compose
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 32 33 34 35 36 37 38 39 40 |
version: '3' networks: default: external: name: schat_network services: mongo: container_name: schat_database image: mongo:4.2.17 restart: unless-stopped environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=admin - MONGO_INITDB_DATABASE=admin volumes: - ./data/db:/data/db - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro command: mongod --oplogSize 128 --replSet rs0 --storageEngine=wiredTiger labels: - "traefik.enable=false" ports: - 27017:27017 mongo-init-replica: image: mongo:4.2.17 command: > bash -c "for i in `seq 1 30`; do mongo mongo/schat -u admin -p 'admin' --authenticationDatabase admin --eval \" rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'mongo:27017' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)" depends_on: - mongo |
2 ./init-mongo.js
1 2 3 4 5 6 7 8 |
db.auth('admin', 'admin'); db = db.getSiblingDB('schat'); db.createUser({ user: 'schat', pwd: 'schat12345', roles: [{ role: 'dbOwner', db: 'schat' }] }); |
** Note
Trỏ Port MongoDB 271017 sang Port 3300
1 |
docker run --detach --publish 3300:27017 --link schat_database:target --net schat_network alpine/socat tcp-listen:27017,fork,reuseaddr tcp-connect:target:27017 |