ich benutze das discourse_docker Repo mit dem launcher-Skript, um eine interne Discourse-Instanz zu betreiben. Ich möchte die Neustartrichtlinie von always auf unless-stopped dauerhaft ändern, um die Docker-Container bei OS-Upgrades / Neustarts gestoppt halten zu können.
Ich sehe, dass die Neustartrichtlinie eine Variable im launcher-Skript ist, aber wie kann ich diese Einstellung am besten beibehalten, wenn ein neuer Container erstellt wird? Sie sollte sowohl über „launcher rebuild“ als auch über den docker_manager über /admin/upgrade funktionieren.
Ich kann mich nicht erinnern, dass jemand anderes das jemals gefragt hat, und ich sehe keinen offensichtlichen Weg. Ich denke, am besten ist es, Folgendes zu tun:
./launcher destroy app
wenn Sie möchten, dass es gestoppt bleibt, und es dann mit
./launcher start app
wieder starten. Dies zerstört den Container, sodass alle Änderungen, die Sie darin vorgenommen haben (wie Upgrades von docker_manager), zerstört werden.
Oh, aber hier ist das:
tl;dr: Führen Sie nach jedem Neuerstellen ein docker update --restart=unless-stopped app aus.
Ja, das weiß ich Das Docker-Update mache ich gerade. Aber ich befürchte, ich werde es bei einigen der nächsten Rebuilds vergessen. Daher die Frage, wie man es persistent machen kann.
Eine andere Möglichkeit wäre, einfach das Launcher-Skript zu bearbeiten und auf nicht zu viele Rebase-Konflikte beim Pull zu hoffen
Die einzige Zeit, in der ich nach einem Neustart Probleme mit dem automatischen Start hatte, war, wenn ich von app.yml zu web_only.yml gewechselt habe und vergessen habe, den app-Container zu zerstören. Ich führe regelmäßig Docker-Upgrades und Neustarts durch, ohne Probleme mit den Autostarts. FWIW, ich habe in den letzten 5 Jahren niemanden gesehen, der sich darüber Sorgen gemacht hat. Es sei denn, es gibt bei Ihnen etwas, das ich nicht weiß, vielleicht machen Sie sich einfach keine Sorgen?
Nun, heute war das Problem, dass ich eine Neuinstallation durchführen wollte, da ich eine seltsame 2.4.0-betaXYZ hatte, die sich nicht von selbst aktualisieren ließ. Ich habe einen Test auf einer anderen VM mit einer sauberen Installation durchgeführt und das Backup auf 2.7.12 wiederhergestellt, was perfekt funktionierte (auch die Aufteilung des Datencontainers in Redis und Postgres).
Nun lief der Hauptserver noch mit einem alten Ubuntu und altem Docker, daher wollte ich:
ein Backup erstellen
Discourse herunterfahren
OS-Upgrade-Spielereien durchführen, ohne mir Sorgen um Discourse machen zu müssen, einschließlich mehrerer Neustarts
Eine Neuinstallation durchführen
Das Backup wiederherstellen
Ich wollte die Container nur nicht gestoppt lassen und sie nicht sofort löschen, da ich mir nicht mehr sicher war, ob ich etwas aus ihnen brauchte, das ich bei meinem Test vielleicht vergessen hatte. Und ich dachte nur, hey, unless-stopped ist für mich die perfekte Neustartrichtlinie, da sie sicherstellt, dass die Container nach einem Neustart automatisch hochfahren, es sei denn, man stoppt sie manuell. Normalerweise genau das, was ich will, also dachte ich, warum nicht versuchen, das dauerhaft zu machen.
Es ist keine große Sache, wenn es nicht möglich ist. Ich werde einfach das Docker-Update durchführen (oder wenn ich es zu oft vergesse, das Docker-Update per Cron alle 5 Minuten durchführen )