Os problemas
1. Como executar um comando cli no umbler?
Todo comando necessário para rodar antes de iniciar o servidor deve estar dentro do script start
do seu package.json
Seu script deveria ser assim:
"scripts":{
"start":"node server.js"
}
A ideia seria rodar a migration antes de iniciar o servidor, ficando assim:
"scripts":{
"start" :"adonis migration:run && node server.js"
}
Mas agora temos outro problema
2. A cli do adonis não está disponível no ambiente da Umbler.
Nesse caso, ao invés de rodarmos a cli diretamente, usaremos o arquivo ace
que está na raiz da aplicação, ficando assim o nosso script start
:
"scripts":{
"start" : "node ace migration:run && node server.js"
}
Mas agora temos mais outro problema.
3. O Adonis não deixa executar migrations em ambiente de produção
Este é uma opção que vem ativada por padrão neste framework por motivos de segurança. As chances de haver uma perda de dados é muito grande em caso de erros.
Neste caso você pode usar a flag --force, que autoriza o framework a realizar a migration sem problemas.
O seu script start
, desta forma, ficará:
"scripts":{
"start" : "node ace migration:run --force && node server.js"
}
Segundo o desenvolvedor no link acima, não é nenhum erro fazer isso. Você só é obrigado a inserir a flag force
para que você dê espontaneamente a ordem para o adonis executá-la, evitando perdas de dados inocentemente.