Como instalar um plugin sem reconstruir (ou definir uma mensagem de manutenção)

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 curtida

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 curtidas

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 curtidas

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 curtida

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 curtida

Can you tell me what kind of issues you had?

1 curtida

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

1 curtida

Desculpe pelo necro, mas este post aparece no topo do Google e eu tive o mesmo “problema”. Isso requer mexer no container Docker, então eu não recomendaria fazer isso em produção se você não souber o que está fazendo. Passos após fazer SSH no seu servidor:
VOCÊ ESTÁ FAZENDO COISAS NÃO SUPORTADAS, SEM GARANTIA DE QUALQUER TIPO!

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

Ainda há algum tempo de inatividade enquanto o container inicia, mas é muito mais rápido do que uma reconstrução completa (segundos versus minutos no menor droplet do DigitalOcean).

3 curtidas

Olá!
Você provavelmente está procurando por isso:

1 curtida

Você também pode

  sv restart unicorn 

Dentro do container, o que é um pouco mais rápido do que reiniciar o container.

Além disso, para alguns plugins, será necessário migrar o banco de dados.

3 curtidas