Одновременный запуск приложения django на хост-машине и в контейнере docker

Я создал простое приложение django, которое имеет одну конечную точку /health/live и возвращает сообщение об успехе при получении запроса get.

Я запускаю приложение локально с помощью python manage.py runserver на порту 8000

У меня также есть docker-compose и Dockerfile, как показано ниже:

FROM python

ENV PYTHONUNBUFFERED 1

RUN mkdir /inventory

WORKDIR /inventory

COPY . /inventory

WORKDIR /inventory

RUN pip install -r requirements.txt

и

version: '3'

networks:
 kong-net:
  name: kong-net
  driver: bridge
  ipam:
    config:
      - subnet: 172.1.1.0/24

services:
  inventory:
    container_name: inventory
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    networks:
      kong-net:
        ipv4_address: 172.1.1.11
    ports:
      - "8000:8000"
    environment:
      DEBUG: 'true'
    command: python manage.py runserver 0.0.0.0:8000

Затем я запускаю docker-compose up (я не отсоединяю его, чтобы иметь возможность видеть журналы)


Они оба работают. Я посылаю запрос get на http://127.0.0.1:8000/health/live:

  • судя по логам, запрос проходит через службу, запущенную непосредственно в системе, а не через контейнер docker
  • .
  • Если я остановлю службу, работающую непосредственно без docker, и пошлю запрос, запрос пройдет через службу, развернутую на docker
  • .

Есть ли причина, по которой это происходит? Почему первый имеет приоритет? И разве я не должен увидеть ошибку при попытке запустить контейнер docker или запустить приложение локально? потому что они оба слушают порт 8000!

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