Отправка http-запроса с сервера django внутри контейнера docker на другой сервер, расположенный на localhost не внутри docker [duplicate]

У меня есть проект django внутри контейнера docker. У меня есть несколько контейнеров для backend, frontend, redis, celery и db, которые обслуживаются docker compose. Мне нужно отправить http-запрос, сделанный с помощью python lib requests, на сервер, который находится вне docker, но запущен на том же компьютере (на localhost). Этот код прекрасно работал, когда сервер django не находился внутри контейнера docker. В данный момент из этой функции выдается код состояния 500. Как я могу это сделать?

Функция, которая должна отправить запрос:

class ConnectLocalHost(APIView):     
    response = requests.post('http://127.0.0.1:9001')     
    return Httpresponse('Message sent', status=status.HTTP_200_OK)

Файл docker-compose.yml:

# docker-compose.yml

version: "3"

volumes:
  db-data:
  storage:

services:
  backend:
    working_dir: /backend
    build:
      context: ./backend
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    command: bash -c "
            ./wait-for-postgres.sh database user user123 postgres &&
            python manage.py makemigrations --settings=test_project.prod_settings &&
            python manage.py makemigrations task_manager_app --settings=test_project.prod_settings &&
            python manage.py migrate --settings=test_project.prod_settings &&
            python manage.py migrate task_manager_app --settings=test_project.prod_settings &&
            python manage.py collectstatic --noinput --settings=test_project.prod_settings &&
            python manage.py auto_superuser --settings=test_project.prod_settings &&
            gunicorn test_project.wsgi:application --bind 0.0.0.0:8000"
    volumes:
      - storage:/backend/storage/
    depends_on:
      - database
      - redis
    environment:
      REDIS_HOST: redis
      POSTGRES_USER: user
      POSTGRES_PASSWORD: user123
      POSTGRES_DB: postgres
      POSTGRES_PORT: 5432
    restart: always

  frontend:
    working_dir: /frontend
    build:
      context: ./frontend
      dockerfile: Dockerfile
    command: yarn start
    ports:
      - "9000:9000"
    depends_on:
      - backend
    restart: always

  redis:
    image: redis:alpine
    expose:
      - 6379
    restart: always

  celery:
    working_dir: /backend
    build:
      context: ./backend
    entrypoint: /backend/worker.sh

    volumes:
      - .:/app
      - storage:/backend/storage/
    environment:
      CELERY_BROKER_URL: "redis://redis:6379/0"
      CELERY_RESULT_BACKEND: "redis://redis:6379/0"
      POSTGRES_HOST: database
      POSTGRES_NAME: postgres
      POSTGRES_USER: user
      POSTGRES_PASSWORD: user123
      POSTGRES_PORT: 5432
    depends_on:
      - database
      - backend
      - redis
    restart: always

  database:
    image: postgres:14.2
    volumes:
      - db-data:/var/lib/postgresql/data/
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: user123
      POSTGRES_DB: postgres
    ports:
      - "5432:5432"
    restart: always

Я уже пытался переключить сеть на хост, но при подключении к базе данных возникали ошибки. Также я попытался добавить host.docker.internal:host-gateway, но ничего не изменилось.

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