Как настроить команду runserver в yml файле с помощью docker compose?

У меня есть dockercompose файл:

version: '3'

services:

  app:
    build: .
    environment:
      - DB_ENGINE=django.db.backends.sqlite3
      - DB_NAME=/code/db.sqlite3
    ports:
      - "8000:8000"
    command: >
      sh -c "python src/manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code
    env_file:
      - .env

Я хочу сделать так, чтобы runserver при docker compose up выводил в консоль рабочую ссылку, нажав на которую открывался бы сайт на джанго. По умолчанию runserver сам выводит кликабельную ссылку, но у меня она как-то странно работает.

Если оставить команду python src/manage.py runserver, то по умолчанию будет URL 127.0.0.1:8000 (это мне и надо). Но почему-то эта ссылка не будет работать. Если ее открыть то будет ошибка в браузере ERR_ADDRESS_INVALID. И с любой другой ссылкой будет также.

Но если в yml файл добавить 0.0.0.0:8000 в команду (python src/manage.py runserver 0.0.0.0:8000), то ссылка тоже не будет работать. Но в этом случае уже если открыть localhost:8000, то сайт начнет работать.

Как можно это всё синхронизировать? Чтобы если я запускал через докер сервер с одной ссылкой, то в консоль выводилась бы она же и она же бы и работала.

Вот мой Dockerfile

FROM python:3.10-slim-buster

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

COPY Pipfile Pipfile.lock /code/

RUN pip install pipenv && pipenv install --system

COPY . /code/

EXPOSE 8000

CMD python src/manage.py runserver & python src/manage.py start_bot

Ответы (0 шт):