diff --git a/rocket-chat/rocketchat.yml b/rocket-chat/rocketchat.yml index 3220ee5..7ef68b6 100644 --- a/rocket-chat/rocketchat.yml +++ b/rocket-chat/rocketchat.yml @@ -25,18 +25,41 @@ services: image: mongo:6 networks: - rocketchat-net - # rs.init zaten yapılmışsa hata vermesin diye OR'lu komut command: > - bash -lc " - mongosh --host mongo:27017 --quiet --eval - 'try { rs.initiate({_id:\"rs0\", members:[{_id:0, host:\"mongo:27017\"}]}) } catch(e) { rs.status().ok }' + bash -lc ' + set -e + echo "Mongo ping bekleniyor..." + # Mongo hazır olana kadar ping at + until mongosh --host mongo:27017 --quiet --eval "db.adminCommand({ ping: 1 }).ok" | grep -q 1; do + sleep 2 + done + echo "Mongo ulaşılıyor. ReplSet durumu kontrol ediliyor..." + # rs.status() initiated değilken hata atar; try/catch ile idempotent yapıyoruz + mongosh --host mongo:27017 --quiet --eval " + try { + if (rs.status().ok === 1) { + print('ReplSet zaten başlatılmış.'); + } else { + throw new Error('status ok değil'); + } + } catch (e) { + print('ReplSet başlatılıyor...'); + rs.initiate({ + _id: \"rs0\", + members: [{ _id: 0, host: \"mongo:27017\" }] + }); + printjson(rs.status()); + } " + ' deploy: restart_policy: - condition: none + condition: on-failure + delay: 5s + max_attempts: 10 placement: constraints: - - node.labels.platform == prod + - node.labels.platform == prod ### Rocket.Chat rocketchat: