Повторная попытка подключения DJANGO к базе данных или более продолжительная задержка запуска?

имеется docker с базой данных Postgresql к которому цепляется Django,но возникает проблема из за скорости запуска PSQL соответственно возникает вот это:

web_1         |         Is the server running on host "postgresdb" (172.22.2.2) and accepting
web_1         |         TCP/IP connections on port 5432?

pg_1           LOG:  database system is ready to accept connections

Каким способом будет правильно установить задержку запуска web_1 на котором висит Django. Или в самом Django правильнее настроить RECONNECT как вы решили данную проблему?

depends_on:

Срабатывает но база данных не успевает создать необходимые таблицы до запуска django. Спасибо!

'OPTIONS': {
            'connect_timeout': 20,
        }

Тоже не влияет :(


Ответы (1 шт):

Автор решения: kidig

Например, можно использовать healthcheck для базы данных прямо в docker-compose:

version: '3.4'

services:
  postgres:
    image: postgres:12
    ports:
      - 5432
    logging:
      driver: none
    healthcheck:
      test: pg_isready
      interval: 10s
      timeout: 5s
      retries: 3

Тогда контейнер с БД будет считаться поднятым, когда пострес действительно стартанул и готов принимать запросы.

Также можно использовать команду pg_isready и со стороны контейнера с django, во время старта контейнера (в bash-скрипте).

→ Ссылка