Ja.
Realiseer je eerst dat depends-on
is bijna geheel nutteloos. Docker weet niets over uw toepassing; het heeft geen manier om te vertellen dat uw databaseserver niet echt klaar is om verzoeken te verwerken.
De juiste oplossing is om uw toepassing zo te coderen dat (a) het de initiële databaseverbinding opnieuw probeert totdat deze gereed is, en (b) het opnieuw verbinding maakt met de database als de verbinding zou mislukken. (a) lost het probleem op waar u naar vraagt, en (b) stelt u in staat de databasecontainer opnieuw te starten, onafhankelijk van de toepassingscontainer.
Als u de code in uw toepassingscontainer niet beheert, kunt u uw hoofdopdracht omwikkelen met een shellscript dat zoiets doet als:
while ! psql -c 'select 1'; do
sleep 1
done
(De juiste authenticatie-opties instellen of een .pgpass
instellen bestand)