PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A composição do Docker depende de não esperar até que o serviço dependente não seja totalmente iniciado


Sim.

Primeiro, perceba que depends-on é quase totalmente inútil. O Docker não sabe nada sobre seu aplicativo; ele não tem como dizer que seu servidor de banco de dados não está realmente pronto para atender solicitações.

A solução correta é codificar seu aplicativo para que (a) ele tente novamente a conexão inicial com o banco de dados até que esteja pronto e (b) ele se reconecte ao banco de dados se a conexão falhar. (a) resolve o problema sobre o qual você está perguntando e (b) permite que você reinicie o contêiner do banco de dados independente do contêiner do aplicativo.

Se você não controlar o código em seu contêiner de aplicativo, poderá agrupar seu comando principal com um script de shell que faça algo como:
while ! psql -c 'select 1'; do
  sleep 1
done

(Definindo as opções de autenticação apropriadas ou configurando um .pgpass Arquivo)