Docker Container Mongo mit custom mongod.conf für replication

Status
Für weitere Antworten geschlossen.

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
489
Punkte für Reaktionen
11
Punkte
24
Hi
ich möchte gerne den offiziellen Rocket.Chat Container betreiben und der benötigt seit v1.0 eine MongoDB mit aktivierter replication ... warum auch immer ... siehe HIER.

Der Befehl nach Anleitung wirft bei mir aber immer folgendes aus:
Rich (BBCode):
> rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]})
{
	"ok" : 0,
	"errmsg" : "This node was not started with the replSet option",
	"code" : 76,
	"codeName" : "NoReplicationEnabled"
}

Empfohlen ist MongoDB 3.6.9. Also habe ich mir den offiziellen Docker Container in dieser Version geladen.
Dieser nutzt standardmäßig kein configfile soweit ich das beurteilen kann. Diese wäre nämlich /etc/mongod.conf, welche nicht existiert.
Allerdings gibt es hierfür ein example /etc/mongod.conf.orig, welches ich mir kopiert, die nötigen Einstellungen für die Replication eingestellt und als volume-file gemountet habe.
Rich (BBCode):
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 127.0.0.1

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

replication:
  replSetName: rs01

So um dieses configfile überhaupt nutzen zu können muss ich es beim Docker run aktivieren:
Rich (BBCode):
docker run --name mongo -v /volume1/docker/mongo/etc/mongod.conf:/etc/mongo.conf -d mongo:3.6.9 --config /etc/mongod.conf

Das funktioniert bei mir schonmal nicht, weil er da immer sagt "file not found" obwohl Berechtigungen im Container auf das File passen.
Und das "--config /pfad" lässt sich in DSM auch nicht grafisch einstellen, oder doch?

Jetzt kenne ich mich auch nicht so gut mit MongoDB aus.
Gibt es eine Möglichkeit das alles ohne Configfile einzustellen?
Wenn ja wie.

kann ich dieses "replication replSetName: rs01" irgnendwie nachträglich ohne config einstellen?

Oder habt ihr sonst noch Ideen?

Wäre über jede Hilfe dankbar.

Gruß
 

3x3cut0r

Benutzer
Mitglied seit
21. Mai 2011
Beiträge
489
Punkte für Reaktionen
11
Punkte
24
Ok, nach langem rumprobieren und googeln habe ich es nun auf CLI hinbekommen. Sachen, die jeder für sich selbst abändern muss habe ich mal fett markiert:
Rich (BBCode):
# Mongo Docker Container erstellen:
docker run -d --network bridge --restart unless-stopped --name mongo -v /volume1/docker/mongo:/data/db:z -p 27017:27017 mongo:3.6.9 mongod --smallfiles --oplogSize 128 --replSet rs0

# /volume1/docker/mongo = Pfad zu einem existierenden Ordner in dem die Datenbank-Dateien gemappt werden.
# 27017 = der auf der Diskstation nach außen erreichbare Port der auf die MongoDB des Containers zeigt.
# 3.6.9 = Von Rocket.Chat empfohlene MongoDB-Version.

# Mongo Docker Container ID ermitteln:
docker ps -a | grep mongo
# Mongo Docker Container starten:
docker start 6fa1e9285c9f

# Kurz warten bis der Container hochgefahren ist ... (ca. 1-2 Minuten) ... dann:

# Mongo Replication im Container aktivieren:
docker exec -d mongo bash -c 'echo -e "replication:\n  replSetName: \"rs01\"" | tee -a /etc/mongod.conf && mongo --eval "printjson(rs.initiate())"'

# Rocket.Chat Docker Container erstellen
docker run -d --network bridge --restart unless-stopped --name rocket.chat --link mongo -e "MONGO_URL=mongodb://192.168.178.254:27017/rocketchat" -e MONGO_OPLOG_URL=mongodb://192.168.178.254:27017/local?replSet=rs01 -e ROOT_URL=https://rocketchat.diskstation.synology.me -p 3000:3000 rocket.chat:1.2.1

# 192.168.178.254:27017 = IP und Port der MongoDB
# ROOT_URL=https://rocketchat.diskstation.synology.me # per Reverse Proxy
# ROOT_URL=http://diskstation.synology.me:3000 # per FQDN und Port
# ROOT_URL=http://192.168.178.254:3000 # per IP und Port

# Rocket.Chat Docker Container ID ermitteln:
docker ps -a | grep rocket
# Rocket.Chat Docker Container starten:
docker run 7d73879a1c29

# Dauert ca. 3-5 Minuten beim ersten Start

# Über die ROOT_URL aufrufen: z.B.: https://rocketchat.diskstation.synology.me

Gruß
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat