Uma instalação da Evolution API que perde as sessões a cada reinício é uma instalação sem volume persistente. A base de dados guarda as instâncias e as mensagens; o Redis, que muitos guias juntam, serve de apoio; e os volumes do Docker garantem que nada disto desaparece quando o contentor é recriado. Este artigo mostra como estas peças se encaixam e como provar que as sessões sobrevivem.
O papel de cada peça
| Peça |
Para que serve |
Se faltar |
| A Evolution API |
Recebe os pedidos e fala com o WhatsApp. |
Nada funciona. |
| PostgreSQL ou MySQL |
Guarda as instâncias e os dados, segundo a documentação do projecto. |
A API não arranca, ou arranca sem memória do que existia. |
| Redis |
Muitos guias usam-no como apoio. A documentação diz o que a sua versão exige. |
Conforme a configuração, o serviço queixa-se ou funciona com menos apoio. |
| Volumes do Docker |
Guardam em disco o que não pode desaparecer. |
Cada reinício apaga as sessões e obriga a ler os QR outra vez. |
As duas bases de dados são suportadas. O PostgreSQL é o que mais guias mostram, mas o MySQL ou o MariaDB servem se for o que já conhece. Se hesita, veja PostgreSQL ou MySQL: qual para o seu projecto.
Montar para sobreviver
| 1 |
Ponha a base de dados num serviço do compose com um volume com nome para os seus dados. O volume é o que fica quando o contentor desaparece. Para o desenho, veja Docker Compose com base de dados.
|
|
| 2 |
Dê um volume também às instâncias da API, como o ficheiro de exemplo do projecto indica.
|
|
| 3 |
Faça os serviços falar pelo nome. Na mesma rede do Compose, o endereço da base de dados é o nome do serviço, não localhost. Palavra-passe e utilizador têm de ser iguais nos dois lados.
|
|
| 4 |
Não publique as portas da base de dados nem do Redis. Só a API precisa de lhes chegar, por dentro da rede do Docker.
|
|
| 5 |
Defina a política de reinício para os serviços voltarem sozinhos depois de um reinício do servidor. O compose tem uma opção para isso, e o exemplo do projecto costuma trazê-la.
|
|
Provar que funciona
| 1 |
Ligue uma instância de teste e confirme que envia.
|
|
| 2 |
Reinicie os serviços com docker compose restart. A instância deve voltar ligada, sem pedir QR.
|
|
| 3 |
Pare e recrie: docker compose down e depois docker compose up -d. Isto apaga os contentores mas não os volumes. A instância continua a existir.
|
|
| 4 |
Reinicie o próprio VPS uma vez, num momento calmo, e veja se tudo volta sozinho.
|
|
O volume não é uma cópia de segurança. Protege contra o reinício, não contra um disco que avaria, um apagão do contentor por engano ou um docker compose down -v. Faça cópias da base de dados (veja cópias com mysqldump e pg_dump) e guarde-as fora do servidor.
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5,94 €/mês (plano de 3 anos, com cupão) Ver planos |