Manage py runserver error unrecognized arguments 8000

Запуск приложения django с помощью docker, нераспознанные аргументы runserver У меня проблема с запуском моего проекта django в контейнере docker. Я пытался сделать это несколькими способами, например: Первый раз, когда я попробовал это, я не получил никакой ошибки, но я не смог открыть приложение в браузере, поэтому я попробовал снова, а затем оно полностью […]

Содержание

  1. Запуск приложения django с помощью docker, нераспознанные аргументы runserver
  2. Запуск приложения django с докером, непризнанные аргументы сервера запуска
  3. 1 ответ
  4. Контейнер / образ Docker запущен, но нет номера порта
  5. Ошибки Django
  6. Python не находит Django
  7. Disallowed host
  8. Не работает runserver Django
  9. Web application could not be started
  10. Ошибка при запуске сервера Django. Что делать?

Запуск приложения django с помощью docker, нераспознанные аргументы runserver

У меня проблема с запуском моего проекта django в контейнере docker. Я пытался сделать это несколькими способами, например:

Первый раз, когда я попробовал это, я не получил никакой ошибки, но я не смог открыть приложение в браузере, поэтому я попробовал снова, а затем оно полностью перестало работать. Я получаю эту ошибку:

Основной процесс, запускаемый в контейнере Docker, состоит из двух частей. Вы предоставляете ENTRYPOINT в Dockerfile, а затем эквивалент CMD с аргументами Compose command: или docker run ./manage.py . . Когда у вас есть и ENTRYPOINT , и CMD , и CMD передаются в качестве дополнительных аргументов в ENTRYPOINT ; поэтому в данном случае вы запускаете python manage.py runserver 0.0.0.0:8000 python manage.py runserver 0.0.0.0:8000 .

Для этой установки я бы предложил:

  • Если вы хотите иметь возможность переопределять команду при запуске контейнера (что очень полезно), предпочтите CMD команде ENTRYPOINT в вашем Dockerfile. Тогда эти переопределения команды будут заменять команду.
  • Если у вас есть полезная команда по умолчанию (а это так), поместите ее в Dockerfile CMD . Вам не нужно указывать Compose command: .

Вы также пытаетесь запустить миграции способом, который не сработает; опять же, контейнер запускает только один процесс, и побеждает последний CMD или переопределение времени запуска. Я бы использовал сценарий-обертку для запуска миграций:

В вашем Dockerfile убедитесь, что это COPY включено (существующая COPY команда, которая у вас есть, сделает это) и сделайте этот сценарий ENTRYPOINT (с синтаксисом JSON-массива).

В вашем файле Compose вам не нужно вводить код volumes: или заменять command: , они уже являются частью вашего Dockerfile.

Источник

Запуск приложения django с докером, непризнанные аргументы сервера запуска

У меня проблема с запуском проекта django в контейнере докеров. Я пробовал это несколькими способами, например:

В первый раз, когда я попробовал это, у меня не было ошибок, но я не мог открыть приложение в браузере, поэтому я попробовал еще раз, а затем оно полностью перестало работать. Я получаю эту ошибку:

1 ответ

Основной процесс, выполняемый в контейнере Docker, состоит из двух частей. Вы предоставляете ENTRYPOINT в Dockerfile, а затем эквивалент CMD с аргументами Compose command: или docker run ./manage.py . . Если у вас есть и ENTRYPOINT , и CMD , CMD передается в качестве дополнительных аргументов ENTRYPOINT ; поэтому в этом случае вы используете python manage.py runserver 0.0.0.0:8000 python manage.py runserver 0.0.0.0:8000 .

Для этой установки я бы предложил:

  • Если вы хотите иметь возможность переопределить команду при запуске контейнера (что полезно), отдайте предпочтение CMD вместо ENTRYPOINT в вашем Dockerfile. Затем эти переопределения команд заменят команду.
  • Если у вас есть полезная команда по умолчанию (которая у вас есть), поместите ее в файл Dockerfile CMD . Вам не нужно указывать Compose command: .

Вы также пытаетесь выполнить миграцию так, как это не сработает; опять же, контейнер запускает только один процесс, и выигрывает последний CMD или переопределение времени запуска. Я бы использовал скрипт-оболочку точки входа для выполнения миграции:

В вашем Dockerfile убедитесь, что это COPY введено (существующая команда COPY , которая у вас есть, сделает это) и сделайте этот скрипт ENTRYPOINT (с синтаксисом массива JSON).

В вашем файле Compose вам не нужно вставлять код с volumes: или заменять command: , они уже являются частью вашего Dockerfile.

Источник

Контейнер / образ Docker запущен, но нет номера порта

Я пытаюсь получить проект django, который я создал для запуска в докере, и создать образ и контейнер для моего проекта, чтобы я мог отправить его в свой профиль dockerhub.

Теперь у меня все настроено, и я создал исходный образ своего проекта. Однако, когда я запускаю его, я не получаю номер порта, прикрепленный к контейнеру. Мне это нужно, чтобы проверить, действительно ли работает контейнер.

Вот что у меня есть:

Вы можете видеть, что номера порта нет, поэтому я не знаю, как получить доступ к контейнеру через локальный компьютер в моем веб-браузере.

Мы можем увидеть Dockerfile ? Убедитесь, что в вашем Dockerfile есть строка EXPOSE 80

@JabariDash Директива EXPOSE в данном случае не имеет значения — он перенаправил порт в командной строке. Я думаю, что журналы докеров определенно будут интереснее.

@Shadow Это честно. Я не знал, что порт переадресовывает команду, как будто он действительно открывает порт. Хорошо знать. В таком случае вы, вероятно, правы. Приложение каким-то образом не работает.

как мне проверить логи докеров . @Shadow

Если я хочу поместить экспозицию в файл докера вместо того, чтобы вводить порт в команде запуска, куда бы я поместил его . @JabariDash

@OmarJandali docker logs (в вашем примере docker logs 01cc817 должен подойти) или, что еще более лениво, отбросьте -d и запустите его встроенным.

где я могу найти URL-адрес / имя сервера докеров @Shadow, чтобы увидеть URL-адрес в моем веб-браузере

когда я запускаю docker run -p 8000:80 test_3 , он не должен давать мне какой-то URL-адрес с расширением для запущенного docker conatiner .. он ничего не делает. он просто дает мне пустую строку без чего-либо . он обычно отображает следующий System check identified no issues (0 silenced). May 02, 2018 — 03:55:30 Django version 2.0.2, using settings ‘mysplit.settings’ Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. Я не понимаю, что здесь @Shadow

Похоже на проблему с буферизацией потока . Попробуйте CMD [«python» «-u» «manage.py» и т. д. Это должно отключить его.

Когда вы создали контейнер, вы опубликовали порты. Ваш контейнер будет доступен через порт 8000, если он будет успешно построен. Однако, как указал Тень, ваш контейнер завершился с ошибкой. Вот почему вы должны добавить флаг -a в свою команду docker container ls . docker container ls показывает только запущенные контейнеры без флага -a .

Я рекомендую отказаться от флага отсоединения -d , чтобы узнать, что вызывает ошибку. Затем создайте новый контейнер после того, как вы успешно запустили тот, над которым работаете. Или просто выполните следующие команды, как только исправите проблему. docker stop testing_first , затем docker container rm testing_first , наконец, запустите ту же команду, что и раньше. docker run —name testing_first -d -p 8000:80 test_1

У меня возникли аналогичные проблемы с первыми экземплярами докеров, которые я пытался запустить.

Эта строчка из вопроса помогает выявить проблему;

Exited (1) (из столбца STATUS) означает, что основной процесс уже завершился с кодом состояния 1 — обычно это означает ошибку. Это освободило бы порты, поскольку контейнер докеров прекращает работу, когда основной процесс завершается по любой причине.

docker logs 01cc покажет журналы контейнера докеров, идентификатор которого начинается с 01cc . Вы должны обнаружить, что чтение этих материалов поможет вам на вашем пути. Знание этой команды очень поможет вам в устранении странностей в докере, независимо от того, запущен ли контейнер или остановлен.

Альтернативный «быстрый» способ — отбросить -d в вашей команде запуска. Это заставит ваш контейнер работать встроенным, а не как демон.

Получил следующее: CommandError: «0.0.0.0» is not a valid port number or address:port pair.

Тогда у вас есть ответ. Ваш CMD неверен. Вы, наверное, хотели написать CMD [«python», «manage.py», «runserver», «0.0.0.0:8000»]

Я создал и запустил новый образ своего проекта с добавлением, которое вы предложили, и когда я попытался его запустить, я получил следующее: Run a command in a new container (MySplit) omars-mbp:mysplit omarjandali$ docker run test_2 usage: manage.py runserver [-h] [—version] [-v <0,1,2,3>] [—settings SETTINGS] [—pythonpath PYTHONPATH] [—traceback] [—no-color] [—ipv6] [—nothreading] [—noreload] [—nostatic] [—insecure] [addrport] manage.py runserver: error: unrecognized arguments: 8000

Ага, в команде допустил опечатку. Исправлено сейчас. Также не позволяйте тому факту, что django работает в докере, отвлекает вас — он по-прежнему будет вести себя так же, как если бы вы запускали его вне докера.

Ничего из этого не имеет значения, пока процесс не заработает (но ваша команда была правильной в первый раз с -p8000:80 )

Итак, теперь он запущен. как я могу узнать, работает ли он в моем браузере: ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7932e349bb95 test_3 «python manage.py ru…» 3 seconds ago Up 5 seconds 0.0.0.0:8000->80/tcp eager_babbage показывает порт, но что я должен указать в URL-адресе

Адрес вашего докер-сервера.

так что я должен подтолкнуть его, чтобы докер его, а затем вставить ссылку . @Shadow

Источник

Ошибки Django

Python не находит Django

/HelloDjango [0] $ python3 manage.py runserver
Traceback (most recent call last):
File «manage.py», line 8, in
from django.core.management import execute_from_command_line

ModuleNotFoundError: No module named ‘django’

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File «manage.py», line 14, in
) from exc
ImportError: Couldn’t import Django. Are you sure it’s installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

Причина в том, что в PATH не прописан путь до python. Вернитесь к шагу PATH

Disallowed host

Вы можете запустить Django с помощью

python3 manage.py runserver

И прописали в settings.py свои хосты, например так

Но при обращении к домену в браузере появляется ошибка DisallowedHost

DisallowedHost at / Invalid HTTP_HOST header: ‘www.andreyolegovich.ru’. You may need to add ‘www.andreyolegovich.ru’ to ALLOWED_HOSTS. Request Method: GET Request URL: http://www.andreyolegovich.ru/ Django Version: 2.1.5 Exception Type: DisallowedHost Exception Value: Invalid HTTP_HOST header: ‘www.andreyolegovich.ru’. You may need to add ‘www.andreyolegovich.ru’ to ALLOWED_HOSTS. Exception Location: /home/a/andreyolegovichru/.local/lib/python3.7/site-packages/django/http/request.py in get_host, line 106 Python Executable: /home/a/andreyolegovichru/.local/bin/python3.7 Python Version: 3.7.0 Python Path: [‘/home/a/andreyolegovichru/andreyolegovich.ru/public_html/HelloDjango’, ‘/home/a/andreyolegovichru/.local/lib/python3.7/site-packages’, ‘/home/a/andreyolegovichru/andreyolegovich.ru’, ‘/opt/passenger40/helper-scripts’, ‘/home/a/andreyolegovichru/.local/lib/python37.zip’, ‘/home/a/andreyolegovichru/.local/lib/python3.7’, ‘/home/a/andreyolegovichru/.local/lib/python3.7/lib-dynload’, ‘/home/a/andreyolegovichru/.local/lib/python3.7/site-packages’] Server time: Sun, 3 Feb 2019 20:07:57 +0000

Проверьте, всё ли правильно прописали в settings.py ALLOWED_HOSTS.

Выключите Django, закройте все консоли подключенные к хостингу или все консоли на локальной машине.

Очистите кэш браузера или откройте url другим браузером.

Не работает runserver Django

Если Вы выполняете команду

python3 manage.py runserver

И ничего не происходит, или например, у Вас работал самый первый проект, а запустить второй не получается — скорее всего дело в хостинге. На нём может быть закрыта возможность слушать порты и выбор рабочего проекта происходит с помощью какого-то скрипта.

Если Вы, как и я, пользуетесь хостингом beget , тот этот скипт будет называться passenger_wsgi.py и лежать будет на одном уровне с директорией public_html.

Пропишите в нём

Web application could not be started

Если Вы хотите переключиться между проектами и уже обновили скрипе passenger_wsgi.py но получили ошибку

Web application could not be started

Скорее всего Вы забыли пересоздать файл tmp/restart.txt

/andreyolegovich.ru [0] $ touch tmp/restart.txt

Также советую перепроверить не забыли ли Вы поменть системный путь на нужный Вам проект.

При смене проекта обычно нужно делать два изменения в файле passenger_wsgi.py

# -*- coding: utf-8 -*-
import os, sys
sys.path.insert(0, ‘/home/a/andreyolegovich/andreyolegovich.ru/public_html/Project_1’)
#sys.path.insert(0, ‘/home/a/andreyolegovich/andreyolegovich.ru/public_html/Project_2’)
sys.path.insert(1, ‘/home/a/andreyolegovich/.local/lib/python3.7/site-packages’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘Project_1.settings’
#os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘Project_2.settings’
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Ещё одна возможная причина — незаданные переменные в файле manage.py

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.

python3 manage.py migrate

ERROR: Can not perform a ‘—user’ install. User site-packages are not visible in this virtualenv.

Если вы пользуетесь виртуальным окружением флаг —user вам скорее всего вообще не нужен.

Источник

Ошибка при запуске сервера Django. Что делать?

Простой 2 комментария

Имя хоста написано кириллицей и Python 3.4 или старее?
Windows: socket.gethostbyaddr(name) fails for non-ASCII hostname
bugs.python.org/issue26227

  • Обновить Python
  • Переименовать хост
  • Либо запускать Django передав ему ip адрес вместо имени хоста python manage.py runserver 127.0.0.1:8000

UPD:

я попробовал воспроизвести подобную ошибку в среде Win 10 (в VirtualBox) и у меня получилось только в случае
если в файле hosts присутствует алиас с кириллицей и локаль Windows русская.

Если удалить русский, оставив только английский (на русском только интерфейс системы), то всё ок.

Так-же не удалось воспроизвести ошибку если при запуске указывать ip хоста как 127.0.0.2
python manage.py runserver 127.0.0.2:8080
При условии, что в hosts нет алиаса с кириллицей для него.

На чистой системе (установлены только Python 3.7.2 и Pycharm Community, русская локаль) подобной ошибки нет.

Заглянул в исходники socket.py и socketmodule.c
Скорее всего данная особенность связаны с этой частью исходного кода Python на C, а именно PyUnicode_DecodeFSDefault

Далее, если имя хоста не написано кириллицей и в hosts нет кириллицы следует вывод, что с высокой долей вероятности дело в стороннем софте(антивирус, кривой кряк и т.д.).

Источник

Issue

I’m having a problem with starting my django project in docker container. I have tried this in multiple ways, for example:

docker-compose run web python manage.py runserver

or just

docker-compose up

first time i have tried this i got no error, but i couldn’t open the app in browser so i tried it again and then it stopped working completely.
I’m getting this error:

manage.py runserver: error: unrecognized arguments: python manage.py runserver

My docker-compose.yml

version: "3.9"

services:
  db:
    image: postgres:alpine
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=gitlabdumptables
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=gitlabdumptables
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    depends_on:
      - db

My Dockerfile

# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip3 install -r requirements.txt
CMD python manage.py makemigrations
CMD python manage.py migrate
COPY . /code/
ENTRYPOINT [ "python", "manage.py", "runserver", "0.0.0.0:8000" ]

Solution

The main process run in a Docker container is made up of two parts. You’re providing an ENTRYPOINT in the Dockerfile, and then the equivalent of a CMD with the Compose command: or docker run ./manage.py ... arguments. When you have both an ENTRYPOINT and a CMD, the CMD gets passed as additional arguments to the ENTRYPOINT; so in this case, you’re running python manage.py runserver 0.0.0.0:8000 python manage.py runserver 0.0.0.0:8000.

For this setup I’d suggest:

  • If you want to be able to override the command when you launch the container (which is useful), prefer CMD to ENTRYPOINT in your Dockerfile. Then these command overrides will replace the command.
  • If you have a useful default command (which you do), put it as the Dockerfile CMD. You do not need to specify a Compose command:.

You’re also trying to run migrations in a way that won’t work; again, a container only runs a single process, and the last CMD or the startup-time override wins. I’d use an entrypoint wrapper script to run migrations:

#!/bin/sh
# entrypoint.sh

# Run migrations
python manage.py migrate

# Then run the main container command (passed to us as arguments)
exec "[email protected]"

In your Dockerfile make sure this is COPYed in (the existing COPY command you have will do it) and make this script be the ENTRYPOINT (with JSON-array syntax).

FROM python:3.10
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY ./ ./
ENTRYPOINT ["./entrypoint.sh"]                           # must be JSON-array form
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] # not ENTRYPOINT

In your Compose file, you don’t need to inject the code with volumes: or replace the command:, these are already part of your Dockerfile.

version: '3.8'
services:
  db: { ... }
  web:
    build: .
    ports:
      - '8000:8000'
    environment: { ... }
    depends_on:
      - db
    # but no volumes: or command:

Answered By – David Maze

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Я использую django с VB Linux Red Hat. Я пробовал использовать команду

python manage.py runserver - 192.168.1.100:8000

Чтобы получить доступ к моему сайту. Он работал до сих пор, но потом он показал мне это сообщение:

manage.py runserver: error: unrecognized arguments: 192.168.1.100:8000

Я думаю, что это имеет какое-то отношение к файлу settings.py, я не могу вспомнить, что именно я там изменил.

Вот содержимое settings.py:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'o-g4ql*yum(+ollra+t%1x)[email protected]_p&hrbq_&z'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = ['192.168.1.100']

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'mysite.urls'

WSGI_APPLICATION = 'mysite.wsgi.application'


# Database
# https://docs.djangoproject.com/en/dev/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# Internationalization
# https://docs.djangoproject.com/en/dev/topics/i18n/

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/dev/howto/static-files/

STATIC_URL = '/static/'

Спасибо!

У меня проблема с запуском моего проекта django в контейнере docker. Я пытался сделать это несколькими способами, например:

Первый раз, когда я попробовал это, я не получил никакой ошибки, но я не смог открыть приложение в браузере, поэтому я попробовал снова, а затем оно полностью перестало работать.
Я получаю эту ошибку:

Основной процесс, запускаемый в контейнере Docker, состоит из двух частей. Вы предоставляете ENTRYPOINT в Dockerfile, а затем эквивалент CMD с аргументами Compose command: или docker run ./manage.py .... Когда у вас есть и ENTRYPOINT, и CMD, и CMD передаются в качестве дополнительных аргументов в ENTRYPOINT; поэтому в данном случае вы запускаете python manage.py runserver 0.0.0.0:8000 python manage.py runserver 0.0.0.0:8000.

Для этой установки я бы предложил:

  • Если вы хотите иметь возможность переопределять команду при запуске контейнера (что очень полезно), предпочтите CMD команде ENTRYPOINT в вашем Dockerfile. Тогда эти переопределения команды будут заменять команду.
  • Если у вас есть полезная команда по умолчанию (а это так), поместите ее в Dockerfile CMD. Вам не нужно указывать Compose command:.

Вы также пытаетесь запустить миграции способом, который не сработает; опять же, контейнер запускает только один процесс, и побеждает последний CMD или переопределение времени запуска. Я бы использовал сценарий-обертку для запуска миграций:

#!/bin/sh
# entrypoint.sh

# Run migrations
python manage.py migrate

# Then run the main container command (passed to us as arguments)
exec "$@"

В вашем Dockerfile убедитесь, что это COPY включено (существующая COPY команда, которая у вас есть, сделает это) и сделайте этот сценарий ENTRYPOINT (с синтаксисом JSON-массива).

FROM python:3.10
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY ./ ./
ENTRYPOINT ["./entrypoint.sh"]                           # must be JSON-array form
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] # not ENTRYPOINT

В вашем файле Compose вам не нужно вводить код volumes: или заменять command:, они уже являются частью вашего Dockerfile.

version: '3.8'
services:
  db: { ... }
  web:
    build: .
    ports:
      - '8000:8000'
    environment: { ... }
    depends_on:
      - db
    # but no volumes: or command:

Понравилась статья? Поделить с друзьями:
  • Manage plugins status error
  • Maintenance error decision aid
  • Man ошибки diag
  • Maint reqd lexus gx470 как сбросить ошибку
  • Man ошибка edc 03779 10 ошибка