Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| events:capitole-du-libre:2017:atelier-docker [2017/11/20 09:16] – yoann | events:capitole-du-libre:2017:atelier-docker [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| ====== Docker pour le dev local ====== | ====== Docker pour le dev local ====== | ||
| - | Conférence/ | + | Atelier animé par **Augustin Riedinger** développeur freelance lors du capitole du libre 2017. Les ressources pour participer à cet atelier ont été mises à disposition par A. Riedinger aux 'URLs suivantes: |
| ^ Les slides | https:// | ^ Les slides | https:// | ||
| ^ Les tutos | https:// | ^ Les tutos | https:// | ||
| - | Cloner le dépôt git: | ||
| - | |||
| - | <code bash> | ||
| - | $ git clone https:// | ||
| - | </ | ||
| + | ===== Installation de L' | ||
| - | ===== Installation de docker ===== | ||
| Prérequis | Prérequis | ||
| Ligne 25: | Ligne 20: | ||
| ==== Ubuntu 14.04 ==== | ==== Ubuntu 14.04 ==== | ||
| - | * le dépot apt n' | + | * Le dépot apt n' |
| * Le paquet **docker** ne correspond pas au programme que nous cherchons à installer | * Le paquet **docker** ne correspond pas au programme que nous cherchons à installer | ||
| <code bash> | <code bash> | ||
| $ sudo apt-get install docker.io | $ sudo apt-get install docker.io | ||
| - | $ sudo pip install docker-compose | + | $ sudo pip install docker-compose==1.3.0 |
| </ | </ | ||
| + | < | ||
| + | Veiller à bien spécifier la version de docker-compose car la dernière version utilisera un client docker trop récent par rapport à la version du serveur proposée par le dépôt apt et l' | ||
| + | < | ||
| + | ERROR: client and server don't have same version (client : 1.21, server: 1.18) | ||
| + | </ | ||
| + | |||
| + | </ | ||
| Ajouter votre utilisateur dans le groupe **docker** | Ajouter votre utilisateur dans le groupe **docker** | ||
| <code bash> | <code bash> | ||
| - | $ sudo usermod --append -G docker $USER | + | $ sudo usermod --append -G docker $USER |
| + | $ newgrp docker | ||
| </ | </ | ||
| - | |||
| - | |||
| - | ==== Debian 9 ==== | ||
| - | |||
| < | < | ||
| - | message | + | Ajouter l' |
| < | < | ||
| - | | ||
| ERROR: Couldn' | ERROR: Couldn' | ||
| Ligne 52: | Ligne 50: | ||
| </ | </ | ||
| - | utilisateur dans le groupe docker | ||
| </ | </ | ||
| - | Attention de ne pas se placer sur une partition avec noexec | + | ==== Debian 9 ==== |
| - | < | ||
| - | sudo usermod --append -G docker user | ||
| - | </ | ||
| ==== Les alias ==== | ==== Les alias ==== | ||
| Ligne 71: | Ligne 65: | ||
| </ | </ | ||
| - | pourqoui? pour certains projet besoin de versions spécifiques des BD, framework, pb de compatibilité des versions. | + | Pourquoi utiliser docker? |
| - | virtualbox/ | + | Pour certains projets vous aurez besoin de versions spécifiques des BD, des framework, et si vous travaillez sur plusieurs projets vous rencontrerez rapidement des problèmes de compatibilité entre les différentes versions des bibliothèques installées dans votre environnement de développement. |
| + | La solution apportée par la virtualisation virtualbox/ | ||
| - | docker container isole les processus mais réutilise, les libs et binaires du systeme quand c' | + | Les containers s’exécutent sur le même système d' |
| - | * dockerfile FROM, RUN, COPY fichier des commandes pour mettre en etat l' | + | ===== Tutoriel 1 ===== |
| - | * docker-compose.yml | + | |
| - | * docker | + | |
| - | pour l'atelier | + | Tutoriel d'introduction de type "Hello World" |
| + | |||
| + | Cloner le dépôt git: | ||
| <code bash> | <code bash> | ||
| - | $ | + | $ git clone https:// |
| + | |||
| + | # Se placer dans le répertoire du tutoriel | ||
| + | $ cd docker-local-tutorial/ | ||
| </ | </ | ||
| - | terminal, container | + | Le dossier contient les fichiers suivants |
| + | |||
| + | < | ||
| + | . | ||
| + | ├── docker-compose.yml | ||
| + | ├── Dockerfile | ||
| + | └── hello.py | ||
| + | </ | ||
| + | |||
| + | La commande suivante utilise docker-compose pour démarrer le processus en environnement cloisonné: | ||
| + | |||
| + | <code bash> | ||
| + | $ docker-compose run --rm --service-ports app /bin/bash | ||
| + | </ | ||
| + | |||
| + | Le prompt a changé, les commandes suivantes seront exécutes dans l' | ||
| + | |||
| + | <code bash> | ||
| + | # Installation de pip le gestionaire de paquets python | ||
| + | apt-get update && apt-get install python-pip | ||
| + | |||
| + | # Installation du serveur web Flask | ||
| + | pip install Flask | ||
| + | </ | ||
| + | |||
| + | La portée de ces commandes est limitée au container | ||
| + | |||
| + | Maintenant que le serveur Flask est installer dans le container on peut lui faire servir notre application présente dans le dossier courant: | ||
| + | |||
| + | <code bash> | ||
| + | FLASK_APP=hello.py flask run | ||
| + | </ | ||
| + | |||
| + | Le serveur Flask s' | ||
| + | |||
| + | |||
| + | ===== Fonctionnement ===== | ||
| + | |||
| + | A propos des principaux fichier de configuration | ||
| + | |||
| + | ==== Le Dockerfile ==== | ||
| + | |||
| + | Ici le Dokerfile présente sa version la plus épurée. Il contient la référence du fichier image à utiliser: | ||
| + | |||
| + | < | ||
| + | FROM ubuntu: | ||
| + | </ | ||
| + | |||
| + | Dans l' | ||
| + | |||
| + | ===== docker-compose.yml ==== | ||
| + | |||
| + | docker-compose est un utilitaire permettant de paramétrer plus simplement les instances docker à l'aide de fichier texte utilisant la syntaxe **YAML**. | ||
| + | |||
| + | Le fichier pour le tutoriel se présente ainsi: | ||
| + | < | ||
| + | app: | ||
| + | build: . | ||
| + | volumes: | ||
| + | - .:/app | ||
| + | ports: | ||
| + | - " | ||
| + | </ | ||
| + | |||
| + | Dans cet exemple: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | * dockerfile FROM, RUN, COPY fichier des commandes pour mettre en état l' | ||
| + | * docker-compose.yml | ||
| + | * docker | ||
| + | |||
| docker-compose fichier yaml | docker-compose fichier yaml | ||