docker-compose-mongo-sharded-tcp.yaml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. version: "3"
  2. services:
  3. mongosharded1:
  4. hostname: mongosharded1
  5. container_name: mongosharded1
  6. image: mongo:${MONGO_TAG}
  7. environment:
  8. MONGO_INITDB_DATABASE: mqtt
  9. networks:
  10. - emqx_bridge
  11. expose:
  12. - 27017
  13. ports:
  14. - 27014:27017
  15. restart: always
  16. command:
  17. --configsvr
  18. --replSet cfg0
  19. --port 27017
  20. --ipv6
  21. --bind_ip_all
  22. mongosharded2:
  23. hostname: mongosharded2
  24. container_name: mongosharded2
  25. image: mongo:${MONGO_TAG}
  26. environment:
  27. MONGO_INITDB_DATABASE: mqtt
  28. networks:
  29. - emqx_bridge
  30. expose:
  31. - 27017
  32. ports:
  33. - 27015:27017
  34. restart: always
  35. command:
  36. --shardsvr
  37. --replSet rs0
  38. --port 27017
  39. --ipv6
  40. --bind_ip_all
  41. mongosharded3:
  42. hostname: mongosharded3
  43. container_name: mongosharded3
  44. image: mongo:${MONGO_TAG}
  45. environment:
  46. MONGO_INITDB_DATABASE: mqtt
  47. networks:
  48. - emqx_bridge
  49. expose:
  50. - 27017
  51. ports:
  52. - 27016:27017
  53. restart: always
  54. entrypoint: mongos
  55. command:
  56. --configdb cfg0/mongosharded1:27017
  57. --port 27017
  58. --ipv6
  59. --bind_ip_all
  60. mongosharded_client:
  61. image: mongo:${MONGO_TAG}
  62. container_name: mongosharded_client
  63. networks:
  64. - emqx_bridge
  65. depends_on:
  66. - mongosharded1
  67. - mongosharded2
  68. - mongosharded3
  69. command:
  70. - /bin/bash
  71. - -c
  72. - |
  73. while ! mongo --host mongosharded1 --eval 'db.runCommand("ping").ok' --quiet >/dev/null 2>&1 ; do
  74. sleep 1
  75. done
  76. mongo --host mongosharded1 --eval "rs.initiate( { _id : 'cfg0', configsvr: true, members: [ { _id : 0, host : 'mongosharded1:27017' } ] })"
  77. while ! mongo --host mongosharded2 --eval 'db.runCommand("ping").ok' --quiet >/dev/null 2>&1 ; do
  78. sleep 1
  79. done
  80. mongo --host mongosharded2 --eval "rs.initiate( { _id : 'rs0', members: [ { _id : 0, host : 'mongosharded2:27017' } ] })"
  81. mongo --host mongosharded2 --eval "rs.status()"
  82. while ! mongo --host mongosharded3 --eval 'db.runCommand("ping").ok' --quiet >/dev/null 2>&1 ; do
  83. sleep 1
  84. done
  85. mongo --host mongosharded3 --eval "sh.addShard('rs0/mongosharded2:27017')"
  86. mongo --host mongosharded3 --eval "sh.enableSharding('mqtt')"