Cet article vise à créer un environnement de développement pour Django en utilisant Dcoker sans installer Python et Django sur la machine locale. Il existe deux façons de créer un environnement à l'aide d'un conteneur: l'une consiste à utiliser uniquement Dockerfile et l'autre à utiliser Docker Compose. Cet article décrit la première.
Veuillez consulter l'article suivant pour ce dernier. ⇒ Construction de l'environnement de développement Simple Docker Compose + Django
Comme le titre l'indique, nous visons à créer un environnement simple, facile, sans problème et fonctionnant rapidement, nous allons donc utiliser le standard Django SQLite3 tel quel. Si vous souhaitez utiliser MariaDB ou PostgreSQL, veuillez vous référer à la documentation officielle de Dcoker.
Nous supposons Windows et Mac avec Docker Desktop installé, ou Linux avec Docker Engine installé.
Les commandes de l'article sont exécutées sur le terminal Mac, mais si Docker Desktop est installé, il semble que des commandes similaires peuvent être exécutées sur l'invite de commande Windows.
Il existe un référentiel Django officiel sur Docker Hub, mais c'est deprecated comme indiqué en haut du TOP, et il est abandonné depuis plus de 3 ans. https://hub.docker.com/_/django
J'ai essayé d'utiliser cette image Docker telle quelle, mais je ne pouvais même pas l'utiliser à des fins d'apprentissage car j'ai trébuché au stade de la création du projet. Je pense qu'il vaut mieux abandonner honnêtement comme quelque chose qui n'existe pas.
Utilisez le Dcokerfile pour créer un environnement de développement Django avec un seul conteneur Docker.
Créez un répertoire de travail arbitraire sur la machine locale, et créez un fichier nommé Dockerfile
, requirements.txt
et un répertoire avec un nom arbitraire (ici, src). Masu).
Dockerfile
requirements.txt
src/
Modifiez le contenu du Dockerfile comme suit.
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Modifiez le contenu de requirements.txt comme suit.
requirements.txt
django
pyyaml
Pour expliquer brièvement le contenu ci-dessus, basé sur l'image Python Docker (basé sur Linux appelé Debian), créez d'abord un répertoire nommé code directement sous la racine, puis décrivez-le dans requirements.txt. Le contenu consiste à installer le package avec la commande pip.
Python3 n'est pas livré avec un module yaml, c'est donc une bonne idée d'installer également pyyaml
.
Sans le module yaml, cela peut provoquer une erreur lorsque dumpdata / loaddata dans Django.
Le nom du répertoire peut être n'importe quel nom autre que code.
Exécutez la commande docker build
sous le répertoire où se trouvent le Dockerfile et les requirements.txt.
$ docker build -t django_s .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django_s latest 0d5d29c3eef9 4 seconds ago 922MB
L'option -t
est une option pour spécifier le nom et la balise de l'image.
Le nom de l'image est arbitraire et n'a pas d'importance. Ici, c'est django_s.
N'oubliez pas le dernier «.» (Point).
Après avoir exécuté la commande docker build
, confirmez que l'image a été créée normalement avec la commande docker images
.
Exécutez la commande docker run
pour créer et démarrer le conteneur à partir de l'image Docker créée dans la section précédente.
$ docker run -itd -p 8000:8000 -v /Users/dev_user/django_test/src:/code --name django_s_test django_s
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ea546d25f3e django_s "python3" 11 seconds ago Up 10 seconds 0.0.0.0:8000->8000/tcp django_s_test
L'option -it
est une option qui sert d'intermédiaire entre les entrées / sorties standard.
Sans cela, le conteneur se terminera immédiatement après le démarrage.
L'option -d
est une option d'exécution en arrière-plan.
Sans cela, l'invite ne sera pas renvoyée pendant l'exécution de la commande ... mais à la place, elle attendra une entrée en mode interactif de Python.
L'option -p
est une option de redirection de port.
Connectez le port 8000 de votre machine locale au port 8000 de votre conteneur.
L'option -v
est une option pour monter le répertoire sur votre machine locale à l'intérieur du conteneur.
Ici, le répertoire src créé à la section 1-1 est monté sur le répertoire _ / code_ du conteneur.
S'il y a une mise à jour dans _ / code_ côté conteneur, elle sera reflétée dans le répertoire src, et s'il y a une mise à jour dans src côté machine locale, elle sera reflétée dans le répertoire _ / code_.
Réécrivez le chemin du répertoire en fonction du chemin de votre machine locale.
L'option --name
spécifie le nom du conteneur.
N'importe quel nom va bien. Ici, c'est django_s_test.
Après avoir exécuté la commande docker run
, utilisez la commande docker ps
pour confirmer que le conteneur a démarré normalement et que le processus est en cours d'exécution.
Vous pouvez également vérifier le conteneur en cours d'exécution à partir de la fenêtre du tableau de bord de Docker Desktop.
À partir de maintenant, ce sont principalement des opérations Django, pas Docker.
Tout d'abord, allez dans le répertoire src et appelez la commande django-admin startproject
dans le conteneur via la commande docker exec
pour créer un projet Django.
Ici, le nom du projet est django_prj, mais bien sûr, vous pouvez changer le nom du projet en ce que vous voulez.
$ cd /Users/dev_user/django_test/src
$ docker exec django_s_test django-admin startproject django_prj .
Avec docker exec [nom du conteneur]
, vous pouvez exécuter n'importe quelle commande dans le conteneur Docker.
La commande django-admin
est disponible lorsque Django est installé, donc si vous ne trouvez pas cette commande, il est probable que docker build
ait échoué.
Dans ce cas, assurez-vous que la partie pip install -r requirements.txt
dans le Dockerfile et le django
dans requirements.txt sont correctement orthographiés.
Si le projet Django est créé avec succès, le fichier de modèle de projet sera créé sous le répertoire src.
db.sqlite3
django_prj/
manage.py
Django a une fonction de serveur de développement qui vous permet de vérifier l'opération indépendamment sans utiliser de serveur Web tel qu'Apache ou Nginx.
Exécutez la commande python manage.py runserver
dans le conteneur via la commande docker exec
, comme vous l'avez fait lors de la création du projet.
Pour interrompre, appuyez sur contrôle + c
.
$ docker exec django_s_test python manage.py runserver 0.0.0.0:8000
...(réduction)...
Django version 3.1, using settings 'django_test.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Pour confirmation, allez sur http: // localhost: 8000 /
dans votre navigateur.
Lorsque la page d'accueil avec l'image de la fusée est affichée, le projet Django fonctionne normalement. Merci pour votre travail acharné: D┼┤
Après cela, lisez la documentation officielle de Django et les livres de référence disponibles dans le commerce, et si une commande est spécifiée, ajoutez docker exec [nom du conteneur]
devant la commande pour faire référence à Django sur le conteneur Docker. Diverses opérations seront exécutées.
Il y avait beaucoup d'informations sur la création d'un environnement de développement pour Django avec Docker, mais il n'y avait aucune entrée expliquant pourquoi l'image officielle publiée sur Docker Hub n'était pas utilisée, et en utilisant Docker et Docker Compose 2 Je n'avais pas d'entrée dans un article qui mentionne qu'il existe un moyen de le faire, alors j'ai créé cet article pour moi-même pour y revenir.
L'article sur la création d'un environnement de développement à l'aide de Docker Compose est le suivant. ⇒ Construction de l'environnement de développement Simple Docker Compose + Django