Сервер Django, запущенный на экземпляре GCE, не может подключиться к облачному SQL postgres

У меня есть docker-compose, который имеет django и nginx в качестве обратного прокси

docker-compose.yml:

version: "3"
services:

  app:
    restart: always
    command: ./startup.sh
    image: region-docker.pkg.dev/project_id/repo/image:tag
    container_name: backend
    expose:
      - "8000"
    volumes:
      - static_volume:/code/static
    hostname: app

  nginx:
    restart: always
    image: region-docker.pkg.dev/project_id/repo/image:tag
    volumes:
      - static_volume:/code/static
    ports:
      - "80:80" 
    depends_on:
      - app

volumes:
  static_volume:

конфигурация переменных соединения с базой данных в settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'Instance': 'project_id:region:instance_name',
        'NAME': 'database_name', 
        'USER': 'username', 
        'PASSWORD': 'password',
        'HOST': 'database_internal_IP', 
        'PORT': '5432',
    }
}

когда я запускаю docker-compose up в VMs CLI, nginx работает отлично, но серверы django работают с этой ошибкой

django.db.utils.OperationalError: could not connect to server: Connection timed out
backend  |      Is the server running on host "instance-private-IP" and accepting
backend  |      TCP/IP connections on port 5432?

Примечание: когда я запускаю psql -h instance-private-IP -U username соединение успешно устанавливается

Примечание: когда я запускаю точно такой же контейнер на своем локальном ПК с теми же конфигурациями, только с публичным IP вместо частного IP, контейнер работает просто отлично

Примечание: учетная запись службы, прикрепленная к ВМ, имеет доступ к облачному SQL включенному

После многочисленных попыток перенастроить все (docker-compose, Django, конфигурацию виртуальной машины)

Ничего не помогло. Подозрительно, что для меня сработало перезапускание экземпляра VM.

Надеюсь, это сэкономит кому-нибудь время.

Вернуться на верх