Tengo una instancia de Discourse recién instalada que se ejecuta a través de docker en una VM en Google Cloud. Actualmente tengo habilitadas las cargas de archivos y las copias de seguridad de Discourse en buckets en Google Cloud, y esas funciones funcionan correctamente después de seguir las instrucciones del hilo Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas. Puedo ver las cargas de prueba en el bucket y, cuando miro las URL de carga, todas las cargas muestran la URL correcta desde la CDN, por lo que parecen extraerse correctamente del bucket.
Luego creé una instancia de PostgreSQL 15.2 en Google Cloud y realicé el procedimiento de configuración de la base de datos que se describe en la primera publicación y también configuré el archivo app.yml. El puerto predeterminado para PostgreSQL en Google Cloud es 5432, así que omití esas líneas.
Si uso la dirección IP pública de la instancia de postgres en la configuración de app.yml, cuando reconstruyo la aplicación, obtengo lo siguiente:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1024 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
a6a71b00bce378aa6334ae1c9fe103778d260bb699fe598f9685689e8b5ce450
Solo para ver qué está pasando, intenté usar las otras IPs de la instancia de postgres.
Si uso la dirección IP privada de la instancia de postgres, obtengo lo siguiente:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1024 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
7333126c522eb51ace4d55ea89803eea54b96704baab70c322008cf2836ba47a
Si uso la dirección IP saliente de la instancia de postgres, obtengo lo siguiente:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1026 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
c588d2b6977b9e7d493b0b59bc694369cb7c2219de67d5886112ed16312626ae
Usando todas las IPs diferentes, los mensajes fallidos son muy similares y la base de datos postgres no recibe ningún dato ni conexión. ¿Alguien tiene alguna idea de lo que estoy haciendo mal?
Además, ¿mi problema se debe a no usar el Cloud SQL Auth Proxy en la instancia de VM? Si es así, supongo que tendré que crear un script para ejecutar el proxy y cronometrarlo antes de la reconstrucción de la aplicación. ¿Alguien tiene alguna idea sobre eso?
Gracias por el tiempo, chicos.