So installieren Sie ein Plugin ohne Neuaufbau (oder setzen eine Wartungsmeldung)

Hi.

I’m searching for a solution that don’t make me rebuild my Discourse when I install a new plugin, which cause a long downtime.
On some forum scripts (like PHPBB, FluxBB, etc…), we can install a plugin without causing a downtime.

I’m also looking for a solution to set a message when the users visits my rebuilding Discourse who says that the forum is currently in maintainance (instead of the web browser error).

Thanks!

1 „Gefällt mir“

It’s really not possible to install a plugin without rebuilding afaik.

This can be done by setting up an offline page while rebuilding here is a guide:

2 „Gefällt mir“

The solution is to use a two-container install. This will let you build a new image while the old one keeps running. The amount of downtime is just what it takes to shutdown the old container and start the new one.

7 „Gefällt mir“

Thanks, I will follow your solution.

A more advanced version can include a load balancer in front of the application container(s) to reduce downtime to a bare minimum right?

1 „Gefällt mir“

Yes, I’ve experimented with having HAproxy in front of two containers, so it should be possible to leave the old server running, crank up the new one, shut down the old one with no downtime. I’ve not yet gotten it working correctly, however.

1 „Gefällt mir“

Can you tell me what kind of issues you had?

1 „Gefällt mir“

I’ll need to crank it up again and document it. It’ll take a while to figure it out again. :frowning:

1 „Gefällt mir“

Entschuldigung für das Necroposting, aber dieser Beitrag erscheint bei Google weit oben und ich hatte das gleiche „Problem“. Es erfordert etwas Herumprobieren im Docker-Container, daher würde ich dies nicht in der Produktion durchführen, wenn du nicht genau weißt, was du tust. Schritte nach dem SSH-Zugriff auf deinen Server:
DU FÜHRST UNTERSTÜTZUNGSFREIE AKTIONEN DURCH, OHNE JEGLICHE GARANTIE!

# cd /var/discourse
# ./launcher enter app
# su discourse
$ cd /var/www/discourse/plugins
$ git clone <plugin_git_url>
$ exit
# exit
# docker restart app

Es gibt zwar noch eine kurze Ausfallzeit, während der Container startet, aber das ist viel schneller als ein vollständiger Neuaufbau (Sekunden gegenüber Minuten auf der kleinsten DigitalOcean-Droplet).

3 „Gefällt mir“

Hallo!
Du suchst höchstwahrscheinlich nach folgendem:

1 „Gefällt mir“

Sie können auch

  sv restart unicorn

innerhalb des Containers neu starten, was ein wenig schneller ist als das Neustarten des gesamten Containers.

Außerdem müssen Sie für einige Plugins die Datenbank migrieren.

3 „Gefällt mir“