docker-compose-mongo-replicaset-tcp.yaml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. version: "3"
  2. services:
  3. mongo1:
  4. hostname: mongo1
  5. container_name: mongo1
  6. image: mongo:${MONGO_TAG}
  7. environment:
  8. MONGO_INITDB_DATABASE: mqtt
  9. networks:
  10. - emqx_bridge
  11. expose:
  12. - 27017
  13. ports:
  14. - 27011:27017
  15. restart: always
  16. command:
  17. --ipv6
  18. --bind_ip_all
  19. --replSet rs0
  20. mongo2:
  21. hostname: mongo2
  22. container_name: mongo2
  23. image: mongo:${MONGO_TAG}
  24. environment:
  25. MONGO_INITDB_DATABASE: mqtt
  26. networks:
  27. - emqx_bridge
  28. expose:
  29. - 27017
  30. ports:
  31. - 27012:27017
  32. restart: always
  33. command:
  34. --ipv6
  35. --bind_ip_all
  36. --replSet rs0
  37. mongo3:
  38. hostname: mongo3
  39. container_name: mongo3
  40. image: mongo:${MONGO_TAG}
  41. environment:
  42. MONGO_INITDB_DATABASE: mqtt
  43. networks:
  44. - emqx_bridge
  45. expose:
  46. - 27017
  47. ports:
  48. - 27013:27017
  49. restart: always
  50. command:
  51. --ipv6
  52. --bind_ip_all
  53. --replSet rs0
  54. mongo_rs_client:
  55. image: mongo:${MONGO_TAG}
  56. container_name: mongo_rs_client
  57. networks:
  58. - emqx_bridge
  59. depends_on:
  60. - mongo1
  61. - mongo2
  62. - mongo3
  63. command:
  64. - /bin/bash
  65. - -c
  66. - |
  67. while ! mongo --host mongo1 --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
  68. sleep 1
  69. done
  70. while ! mongo --host mongo2 --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
  71. sleep 1
  72. done
  73. while ! mongo --host mongo3 --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
  74. sleep 1
  75. done
  76. mongo --host mongo1 --eval "rs.initiate( { _id : 'rs0', members: [ { _id : 0, host : 'mongo1:27017' }, { _id : 1, host : 'mongo2:27017' }, { _id : 2, host : 'mongo3:27017' } ] })" --quiet
  77. mongo --host mongo1 --eval "rs.status()" --quiet