Configure Discourse para usar um servidor PostgreSQL separado

Tenho uma instância do Discourse recém-instalada rodando via Docker em uma VM no Google Cloud. Atualmente, tenho uploads de arquivos e backups do Discourse para buckets no Google Cloud habilitados e essas funções estão funcionando corretamente após seguir as instruções no tópico Configurar um provedor de armazenamento de objetos compatível com S3 para uploads. Posso ver os uploads de teste no bucket e, quando olho para os URLs de upload, todos os uploads estão mostrando o URL correto da CDN, então eles parecem estar sendo puxados corretamente do bucket.

Em seguida, criei uma instância PostgreSQL 15.2 no Google Cloud e executei o procedimento de configuração do banco de dados descrito no primeiro post e também configurei o arquivo app.yml. A porta padrão para PostgreSQL no Google Cloud é 5432, então omiti essas linhas.
Se eu usar o endereço IP público da instância postgres no arquivo app.yml, ao reconstruir o aplicativo, recebo o seguinte:

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

Apenas para ver o que está acontecendo, tentei usar os outros IPs da instância postgres.
Se eu usar o endereço IP privado da instância postgres, recebo o seguinte:

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

Se eu usar o endereço IP de saída da instância postgres, recebo o seguinte:

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 todos os IPs diferentes, as mensagens de falha são muito semelhantes e o banco de dados postgres não recebe nenhum dado ou conexão. Alguém tem alguma ideia do que estou fazendo de errado?

Além disso, meu problema está sendo causado por não usar o Cloud SQL Auth Proxy na instância VM? Se estiver, acho que terei que criar um script para executar o proxy e cronometrá-lo antes da reconstrução do aplicativo. Alguém tem alguma ideia sobre isso?

Obrigado pelo tempo, pessoal.