Starten Sie dockerisierte Websites bei Bedarf

Starten Sie dockerisierte Websites bei Bedarf

Ich habe nur begrenzte Ressourcen auf meinem Server und möchte 50 verschiedene Versionen meines Produkts hosten. Ich habe ein sehr kompliziertes und leider fehlerhaftes Produkt und möchte jede Version zugänglich halten. Wenn ein Fehler gemeldet wird, können wir ihn untersuchen und herausfinden, wann genau dieses Problem zum ersten Mal aufgetreten ist.

Da jedoch jede Website 5 GB Daten und 1 GB Datenbank hat, ist es nicht möglich, alle Websites ständig geöffnet zu halten. Unser Server gibt MySQL-Fehler aus und reagiert aufgrund eines Speicherüberlaufs nicht.

Ich habe mich gefragt, ob es eine Möglichkeit gibt, diese 50 verschiedenen Websites standardmäßig deaktiviert zu lassen. Wenn jemand versucht, version-5-1.ourdomain.com zu erreichen, wird ein Wartebildschirm angezeigt und nach dem Booten eine Weiterleitung durchgeführt.

Und wenn eine Website länger als 30 Minuten nicht besucht wurde, schließen Sie sie und geben Sie die Ressourcen frei.

Antwort1

Es gibt vielleicht einen besseren Weg, aber Sie sollten in der Lage sein, einen Reverse-Proxy auf dem Host in Kombination mit der Aktivierung des Systemd-Sockets zu verwenden. Wenn eine Anforderung beim Socket eingeht, kann Systemd den Container starten und die Anforderung weiterleiten (es wird blockiert, bis der Container gestartet wird und die Anforderung empfängt), dann die Protokolldateien überwachen lassen und wenn beispielsweise 5 Minuten lang nichts im Zugriffsprotokoll angezeigt wird, einfach den Container stoppen.

Antwort2

Ich hatte das gleiche Problem (ich wollte einen Webserver bei Bedarf starten ... und nicht 50(!) verschiedene Kopien auf demselben Host laufen lassen). Die vorhandene Antwort bietet eine vollkommen korrekte Lösung, aber es bleibt noch etwas Arbeit, um sie einzurichten, und ich wollte auch etwas, das sich problemlos in einer containernativen Umgebung bereitstellen lässt, die nicht so gut mit systemd zusammenarbeitet.

Zu diesem Zweck habe ich das folgende Projekt erstellt, das ich jetzt in der Produktion betreibe:https://github.com/radian-software/sleeping-beauty

Es ist nicht perfekt, kann aber für Ihren Anwendungsfall geeignet sein oder entsprechend angepasst werden.

verwandte Informationen