Cómo instalar un plugin sin recompilar (o establecer un mensaje de mantenimiento)

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 me gusta

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 Me gusta

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 Me gusta

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 me gusta

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 me gusta

Can you tell me what kind of issues you had?

1 me gusta

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

1 me gusta

Disculpen la necro, pero este post aparece alto en Google y tuve el mismo “problema”. Requiere hacer ajustes dentro del contenedor de Docker, así que no lo recomendaría en producción si no sabes lo que estás haciendo. Pasos después de hacer SSH en tu servidor:
ESTÁS HACIENDO COSAS NO SOPORTADAS, SIN GARANTÍA DE NINGÚN TIPO!

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

Aún hay algo de tiempo de inactividad mientras el contenedor se inicia, pero es mucho más rápido que una reconstrucción completa (segundos frente a minutos en el droplet más pequeño de DigitalOcean).

3 Me gusta

¡Hola!
Lo más probable es que estés buscando esto:

1 me gusta

También puedes

  sv restart unicorn 

Dentro del contenedor, lo cual es un poco más rápido que reiniciar el contenedor.

Además, para algunos plugins necesitarás migrar la base de datos.

3 Me gusta