Vincule novamente o postgresql aos trilhos após a reinicialização do dokku

Eu realmente amo Dokku em combinação com o plugin dokku-pg . O único problema que estou tendo com ele é que, após a reinicialização do servidor, o link do banco de dados com o aplicativo rails será removido.

Isso tem a ver com o fato de que você não pode ter certeza sobre o IP e a porta fornecidos pelo docker.

Se você já se deparou com uma situação em que teve que reiniciar o servidor e o aplicativo rails não funcionou depois, tente o seguinte:

  • 1. Coloque o seguinte em um arquivo chamado relinkdb
#!/bin/bash
APP
="$1";
CURRENT_URL
=`dokku config:get $APP DATABASE_URL`

dokku postgresql
:create $APP
ID
=$(docker ps -a | grep "postgresql/$APP":latest | awk '{print $1}')
IP
=$(docker inspect $ID | grep IPAddress | awk '{ print $2 }' | tr -d ',"')
NEW_URL
=$(echo $CURRENT_URL | sed -e "s/@.*//@$IP//g")
dokku config
:set $APP DATABASE_URL=$NEW_URL
  • 2. execute o comando chown +x relinkdb
  • 3. execute o executável com: ./relinkdb APPNAME

Isso recriará o contêiner Postgresql para Docker e vinculará o contêiner ao seu aplicativo Rails.