Construction d'un environnement de développement simple Docker + Django

Aperçu

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.

supposition

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.

À propos de l'image officielle

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.

Créer un seul conteneur avec Dockerfile uniquement

1. Créez un répertoire de travail

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/

2. Modifiez Dockerfile et requirements.txt

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.

3. Créez une image Docker

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.

4. Créer et démarrer un conteneur

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. django_s_test_dashboard.png

5. Créez un projet Django

À 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

6. Démarrez le serveur de développement de Django

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. django_s_test_rocket.png

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.

Impressions

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

référence

Recommended Posts

Construction d'un environnement de développement simple Docker + Django
Construction de l'environnement de développement Simple Docker Compose + Django
Créer un environnement de développement PureScript avec Docker
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Créez rapidement un environnement de développement WordPress avec Docker
Créer un environnement de développement pour Django + MySQL + nginx avec Docker Compose
Créer un environnement de développement pour Docker, Java, vs code
Essayez de créer un environnement de développement Java à l'aide de Docker
Créer un environnement Node.js avec Docker
Créer un environnement de développement Unity sur docker
Créer un environnement d'exécution WAS à partir de Docker
Créer un environnement de développement Java sur Mac
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Créer un environnement Laravel / Docker avec VSCode devcontainer
[Win10] Créer un environnement de développement JSF avec NetBeans
Créer un environnement de développement Spring Boot avec docker
Créer un environnement de développement Java avec VS Code
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Environnement de développement WSL2 + VSCode + Docker
Créer un conteneur Docker pour un serveur Web simple Python
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Créez un environnement de développement Docker + Laravel PHP + Vue.js en 5 minutes
[Note] Créez un environnement Python3 avec Docker dans EC2
Créer un environnement Docker avec WSL
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
Ruby ① Création d'un environnement Windows
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
J'ai essayé de créer un environnement de développement padrino avec Docker
Créez un environnement Vue3 avec Docker!
Créer un environnement local Couchbase avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Création d'un environnement de développement Java (pour Mac)
Créer un environnement XAMPP sur Ubuntu
Créer un environnement de développement Jooby avec Eclipse
Créez un environnement Docker + Laravel avec Laradock
Créer un environnement de développement Go avec WSL2 + Docker Desktop + VSCode (Remote --Containers)
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Créez un environnement de développement où les points d'arrêt de Ruby on Rails fonctionnent sous Windows