Labo 7 - Création d'images
Nous allons voir dans cette exemple comment customiser une image officielle php.
D'abord créons le conteneur et on se retrouve dans la console php du conteneur
sudo docker run -ti php
Nous allons utiliser Soap (qui permet de créer des web services)
new SoapClient();
Nous voyons que le module Soap n'est pas présent sur l'image officielle de php téléchargée précédemment
Pour l'installer, il faut d'abord se connecter au conteneur php en bash depuis un terminal de la machine hôte
sudo docker exec -ti <idduconteneur> bash
Pour trouver comment installer l'extension souhaitée, il faut aller sur le hub de docker dans explore, puis php
Donc dans le terminal bash du conteneur
docker-php-ext-install soap
Visiblement il manque une librairie : libxml-2.0
Pour là trouver de retour dans le terminal bash du conteneur :
apt update && apt-cache search libxml2
Puis faire
apt install -y libxml2-dev
Et maintenant relançons l'installation de soap
docker-php-ext-install soap
Si nous relançons la commande new SoapClient depuis le terminal php cela ne fonctionnera pas puisque php est déjà lancé et il n'a pas l'extension précédemment installée.
Depuis le terminal bash, lançons d'abord php -a (pour se remettre en mode php, puis
new SoapClient('http://webservices.oorsprong.org/webexamples.countryinfo/CountryInfoService.wso?WSDL');
Le webservice a été déplacé... mais cela n'empêche en rien la création de l'image.
La création de l'image passe par un Dockerfile
De retour dans le terminal hôte nous allons éditer un Dockerfile
sudo vi Dockerfile
Puis copier coller le texte dedans en sauvegardant
FROM php:7.0.31-cliRUN apt updateRUN apt install -y libxml2-devRUN docker-php-ext-install soap
Pour construire l'image, il faut
sudo docker build -t php_soap:7.0.31 .
build -> construction de l'image à l'aide du Dockerfile
-t -> permet de donner un tag à notre image
. -> chemin courant où se trouve le Dockerfile (pour un Dockerfile avec un nom personnalisé, il faut rajouter -f MonDockerFile .)
J'ai choisi de personnaliser le nom de mon Dockerfile donc je lance la commande
sudo docker build -t php_soap:7.0.31 -f MonDockerFile .
On vérifie que l'image soit bien dans le cache :
sudo docker images
Testons notre image pour voir si le module soap a bien été installé :
sudo docker run -ti php_soap:7.0.31
L'image customisée avec soap est bien présente !
Maintenant il est également possible de faire évoluer la version de notre image par exemple en 7.2.8
Modifions notre fichier customisé MonDockerFile
sudo vi MonDockerFile
sudo docker build -t php_soap:7.2.8 -f MonDockerFile .
Même chose que plus haut, vérifions
sudo docker run -ti php_soap:7.2.8
Cela a fonctionné. Il ne nous reste plus qu'à arrêter l'ancien conteneur et mettre en marche le nouveau















No comments to display
No comments to display