Ma première application Django dans Docker

· 678 mots · Temps de lecture 4min

Dans la partie I, nous avons exploré les concepts clés liés à la conteneurisation et à Docker. Nous avons également créé le conteneur le plus simple possible et l'avons fait exécuter un script qui affiche "Hello, World".

Aujourd'hui, nous allons créer une application Django très simple. Ce sera l'occasion d'ajouter quelques éléments à notre liste d'apprentissage:

  • comment gérer les requirements avec Docker
  • comment tagger votre image Docker dans une version spécifique
  • comment exposer (ou publier) des ports de conteneurs Docker à la machine hôte

Si vous n'avez pas parcouru le premier post et si vous ne connaissez pas du tout Docker, vous pouvez le consulter ici. Vous n'avez pas besoin de maîtriser Django pour ce tutoriel mais si vous ne le connaissez pas et si vous êtes curieux, le tutoriel Django est une excellente ressource pour cela.

Créer le projet Django 🔗

Exécutons ce qui suit dans votre terminal

# créez un répertoire de démonstration et allez dans ce répertoire
mkdir demo && cd demo

# créez un virtualenv et activez-le virtualenv
virtualenv ~/.virtualenvs/demo && source ~/.virtualenvs/demo/bin/activate

# installez Django et démarrez un projet Django
pip install Django
django-admin startproject djdocker && cd djdocker

# écrire les requirements dans un fichier texte
pip freeze > requirements.txt

# créez un Dockerfile
touch Dockerfile

J'ai ajouté des commentaires en cours de route, mais n'hésitez pas à prendre quelques minutes pour comprendre chaque commande si vous en avez besoin. Nous avons essentiellement créé l'application Django la plus simple possible (une application vide) et un fichier de requirements pour gérer nos dépendances. C'est tout ce dont nous avons besoin pour le moment!

Le Dockerfile 🔗

Ouvrez votre Dockerfile dans un éditeur de texte et écrivez ce qui suit:

# Utilisez python 3.7 comme image parente
FROM python:3.7

# Définissez /app comme le répertoire de travail
WORKDIR /app

# Copiez le contenu du répertoire local dans /app au sein du conteneur
ADD . /app

# Installez les packages spécifiés dans requirements.txt dans le conteneur
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Exécutez l'application lorsque le conteneur lance
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

If you have checked the part I, you should be familiar with most of the Dockerfile instructions. The new thing is that we now run pip install within the Docker file. By this very simple command, you can now install the requirements from your requirements file onto the container and obtain a 100% predictable environment (the one you we’ve just created above!).

The last step in the Dockerfile will run your Django app in the container at the port 8000.

Si vous avez lu la partie I, vous vous êtes familiarisé avec la plupart des instructions Dockerfile. La seule nouveauté est que nous exécutons maintenant l'installation des requirements depuis le Dockerfile. Par cette commande très simple, vous pouvez maintenant obtenir un environnement 100% prévisible (celui que vous venez de créer ci-dessus!).

La dernière étape du Dockerfile exécutera votre application Django dans le conteneur et exposera le port 8000.

Construction et exécution de l'image 🔗

À partir de votre ligne de commande, vous pouvez ensuite build votre image et l'exécuter:

# construisez votre image Docker et taggez la 'demo'
docker build -t demo:0.1 .

# exécutez l'image et mappez le port TCP 8000 dans le conteneur au port 80 sur votre machine locale
docker run -p 80:8000 demo:0.1

Comme vous pouvez le voir, vous pouvez simplement ajouter le versioning à votre image de conteneur en la séparant avec deux points (:). Vous pouvez ensuite exécuter l'image de votre choix en spécifiant le nom de l'image avec la version.

L'option -p est un raccourci pour -publish et vous permet de mapper les ports de votre conteneur sur les ports de votre machine locale, dans l'ordre suivant {portHost}: {portConteneur}.

Vous pouvez maintenant vérifier l'adresse suivante dans votre navigateur: http://localhost/. Si tout s'est bien passé, vous devriez voir une page Django par défaut disant “The install worked successfully! Congratulations!”.

Conclusion 🔗

En effet… félicitations… pour avoir exécuté votre première application Django dans un conteneur Docker! Dans le prochain article, nous utiliserons docker-compose pour exécuter une application Docker multi-conteneurs.