
Ce poste explique comment Dockeriser une application Django 2.0 en utilisant docker compose. C’est un tutoriel pas à pas pour apprendre à utiliser Django avec Docker à partir du zéro.
Tuto sur Youtube
Dockeriser une application Django 2 avec docker compose
Ne perdons pas de temps et allons aux étapes suivantes.
1. Tout d’abord il faut créer un répertoire vide nommé dockerize-django-app et ajouter un autre dossier à l’intérieur nommé web. web devrait contenir le projet Django.
mkdir dockerize-django-app mkdir dockerize-django-app/web
2. Nous allons maintenant créer un fichier requirements.txt dans le dossier web et d’y écrire cette ligne pour installer Django version 2.0 dans le conteneur Docker:
Django==2.0
3. Passons maintenant à la création du Dockerfile dans le dossier web. Le Dockerfile devrait contenir les lignes suivantes (toutes les lignes sont commentées pour vous aidez à mieux comprendre):
FROM python:3.4 # Permet à Python d'afficher tout ce qui est imprimé dans l'application plutôt que de le mettre en mémoire tampon. ENV PYTHONUNBUFFERED 1 # Création of the workdir RUN mkdir /code WORKDIR /code # Add requirements.txt file to container ADD requirements.txt /code/ # Install requirements RUN pip install --upgrade pip RUN pip install -r /code/requirements.txt # Add the current directory(the web folder) to Docker container ADD . /code/
Nous utilisant l’image Docker officielle pour Python 3.4, ensuite nous copions le dossier contenant nos fichiers requirements.txt dans le conteneur, puis installez Docker avec pip install
4. Créer un fichier appelé docker-compose.yml à la racine du répertoire dockerize-django-app.
Le docker-compose.yml est utilisé pour décrire les services qui font notre application. Ici, nous avons seulement besoin d’un service web (Django).
version: "3" services: web: build: ./web/ ports: - "8000:8000" volumes: - ./web:/code command: django-admin startproject mysite .
Ici, nous spécifions que nous utilisons la version 3 de docker-compose et nous avons seulement un service appelé web. Le service Web utilisera le port 8000 à l’intérieur du conteneur Docker et l’exposera pour la machine hôte.
La commande django-admin startproject mysite .est utilisé pour générer un projet Django nommé mysite dans le répertoire courant (/web/).
5. Nous allons effectuer un Build puis un Run pour créer une structure de répertoire de projet Django.
docker-compose up --build
6. Maintenant, nous avons un nouveau répertoire nommé mysite, mais il est protégé en écriture car Docker s’exécute avec le privilège root. Donc, mettons en écriture les fichiers générés.
À la racine du répertoire du projet (dockerize-django-app) tapez:
sudo chown -R $USER:$USER web/mysite/ sudo chown -R $USER:$USER web/manage.py
7. Après avoir généré une application Django vide, nous pouvons enfin l’exécuter. Modifiez simplement la commande docker-composer pour que le service Web lance le serveur Django avec la commande python manage.py runserver 0.0.0.0:8000
version: "3" services: web: build: ./web/ ports: - "8000:8000" volumes: - ./web:/code command: python manage.py runserver 0.0.0.0:8000
Maintenant, lancez le conteneur Docker avec la commande: docker-compose up et ouvrez le navigateur sur http://localhost:8000
Vous devriez voir cette page:

Et cette sortie de la console:

Conclusion
Dans ce tutoriel, nous avons vu comment installer et exécuter une application Django très basique avec Docker en utilisant docker-composer.
Vous pouvez trouver le code source du projet sur Github: https://github.com/wassim6/dockerize-django-app-part-1/
Dans le prochain tutoriel, nous verrons comment appliquer les migrations Django en utilisant un service Docker, car comme vous pouvez le voir dans la sortie de la console, nous avons un message d’avertissement:
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Bonne lecture et j’èspère que ça été utile!!