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
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
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
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.
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.
** 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.
** 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