[DOCKER] [Django] Changer l'adresse IP par défaut de la commande runserver

environnement d'utilisation

Article de référence

https://scrapbox.io/shimizukawa/127.0.0.1_%E3%81%A8_0.0.0.0_%E3%81%AE%E9%81%95%E3%81%84 https://stackoverflow.com/questions/23639085/django-change-default-runserver-port

Synopsis

Si vous souhaitez simplement utiliser la technique du titre, ignorez cet élément

J'ai exécuté Django dans un conteneur Docker et j'ai essayé d'accéder au serveur depuis le PC hôte. Bien que j'aie fait Port avant, je ne pouvais pas accéder au serveur depuis la machine hôte uniquement avec la commande normale python manage.py runserver. Django définit l'adresse IP sur «127.0.0.1» par défaut, mais c'est l'adresse IP de l'interface de bouclage locale, qui est l'adresse IP créée virtuellement à l'intérieur de la machine. Par conséquent, accédez à 127.0.0.1 depuis l'extérieur du conteneur. Même si vous essayez, cela n'existe pas. D'autre part, lorsque vous démarrez le serveur avec Rails etc., l'adresse IP attribuée par défaut (bien que ce ne soit pas strictement une adresse IP), 0.0.0.0 lie (attribue) le port spécifié pour toutes les interfaces Internet. Te donnera. Pour faire cette liaison, vous pouvez exécuter la commande python manage.py runserver 0.0.0.0, mais c'est ennuyeux de frapper le dernier 0.0.0.0 à chaque fois que vous démarrez le serveur, donc par défaut 127.0.0.1 J'ai décidé d'en faire 0.0.0.0 à la place

Lorsque vous n'utilisez pas Docker

Si Django est installé dans votre environnement local et que vous exécutez le serveur à partir de là /usr/local/lib/python3.8/site-packages/django/core/management/commands Quelque part dans runserver.py dans Définissez default_addr sur 0.0.0.0.

runserver.py


default_addr = '0.0.0.0'

Économisez simplement avec ça

Lors de l'utilisation de Docker

Si c'est difficile à lire

https://github.com/kshuta/Django_2.0_Docker Ce référentiel contient le Dockerfile créé pour utiliser Django 2 sur Docker et les fichiers qui l'accompagnent. Si vous trouvez cela difficile à lire ci-dessous, essayez de créer une application Django en téléchargeant ou en utilisant le référentiel ci-dessus comme modèle. L'adresse IP par défaut est «0.0.0.0». Veuillez lire attentivement le contenu de Readme et Dockerfile avant de les utiliser.

Si ce n'est pas difficile à lire

Cela fait seulement un mois que j'ai utilisé Docker, donc je ne suis pas sûr que ce soit la bonne voie à suivre. Mais il fait le travail alors pourquoi pas.

  1. ** Obtenez runserver.py de quelque part. ** ** Si vous google django 2 source code etc., le code source de django est sur github, donc Allez dans le répertoire django / core / management / commands, téléchargez runserver.py et mettez le fichier dans le répertoire où se trouve le Dockerfile.

  2. ** Ajouter la notation COPY dans Dockefile ** À l'étape précédente, runserver.py doit être placé dans le contexte Docker (peut-être que l'utilisation du contexte Docker est incorrecte), alors ajoutez la notation suivante dans le Dockerfile.

Dockerfile


WORKDIR /usr/local/lib/python3.8/site-packages/django/core/management/commands
COPY runserver.py /usr/local/lib/python3.8/site-packages/django/core/management/commands/
WORKDIR /

Remplacez le dernier WORKDIR par votre répertoire favori. Ce n'est pas forcément le pire.

Vous avez maintenant changé l'adresse IP par défaut en 0.0.0.0! Maintenant, essayez d'exécuter python manage.py runserver depuis le shell à l'intérieur du conteneur. Si vous accédez fermement à localhost: 8000 depuis la machine hôte, vous pouvez voir la page que vous avez créée.

Recommended Posts

[Django] Changer l'adresse IP par défaut de la commande runserver
Obtenez l'adresse IP du client avec Django
[Python] Changeons l'URL du site administrateur de Django
Changer le thème de Jupyter
Changer le style de matplotlib
Plongez dans la commande Django Custom [1]
Changer l'arrière-plan d'Ubuntu (GNOME)
[Go] Créez une commande CLI pour changer l'extension de l'image
Changer le suffixe de django-filter / DateFromToRangeFilter
Considérez la description de Dockerfile (Django + MySQL②)
J'ai essayé le serveur asynchrone de Django 3.0
Comprendre la commodité de Django Rest Framework
Script pour changer la description de fasta
Version Migemo de la commande: find ,: mfind
Changer l'ordre de PostgreSQL dans Heroku
Changer le serveur Batfish de destination de pybatfish
Notez l'achèvement d'une commande chronophage
Prenons la description de docker-compose.yml (Django + MySQL ③)
Rendre la valeur par défaut de l'argument immuable
Modifier le référentiel de référence par défaut pour l'installation de pip
Sortie exclusive de l'application Django utilisant ngrok
Modifiez le point décimal de la journalisation de, à.
J'ai vérifié la période de rétention de session de django
L'histoire de la mauvaise lecture de la ligne d'échange de la commande supérieure
Obtenir uniquement la partie adresse de la carte réseau (eth0)
L'histoire de l'affichage des fichiers multimédias dans Django
Changer la résolution d'Ubuntu s'exécutant sur VirtualBox