Одновременный запуск приложения 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!