Docker-compose django-python взаимодействие контейнеров

Итак, я запускаю узел django и обычный скрипт python с помощью docker-compose. Скрипт python регулярно запрашивает данные у бэкенда django. Однако, когда я docker-compose up получаю эту ошибку:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='0.0.0.0', port=8080): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f3d6e45dc10>: Failed to establish a new connection: [Errno 111] Connection refused'))

Вот мой docker-compose.yaml:

version: "3"
services:
  backend:
    command: >
      sh -c "python3 manage.py wait_for_db && 
             python3 manage.py migrate &&
             python3 manage.py runserver 0.0.0.0:8080"
    build:
      context: ./backend
      dockerfile: Dockerfile
    volumes:
      - ./backend:/backend
    ports:
      - "8080:8080"

  monitor:
    command: >
      sh -c "python3 main.py"
    build:
      context: ./monitor
      dockerfile: Dockerfile
    volumes:
      - ./monitor:/monitor
    ports:
      - "8082:8082"

из monitor Я делаю:

response = requests.get(url = 'http://0.0.0.0:8080/')

Какой правильный способ связи между узлами в docker?

P.S Cors origins разрешены в django

Он не может подключиться, потому что из контейнера монитора бэкенд находится не по адресу 0.0.0.0, а по адресу, назначенному docker в созданной им сети по умолчанию. А имя сервиса является псевдонимом для ip контейнера. Таким образом, доступ к сервису backend можно получить через псевдоним backend

Читайте подробнее об этом здесь.

Чтобы заставить его работать. Измените скрипт монитора на

requests.get(url = 'http://backend:8080')

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