.
This commit is contained in:
parent
ea120e58ff
commit
5df3527eea
|
|
@ -25,15 +25,38 @@ 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user