SlideShare une entreprise Scribd logo
1  sur  42
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
La tête dans les nuages avec
ZendServer, Magento2,
MS Azure et Docker !
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Pierre Fay
Expert technique Magento, @Itelios
Membre de la Z-Team
Blog : www.pierrefay.fr / www.pierrefay.com
Twitter : @pierrefay
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Spécialiste du commerce connecté et digital
Itelios c'est :
- Société de service et conseil
- Accompagne les distributeurs et les marques
Jules, Jennifer, Lacoste, Bizbee, Kenzo, Maje, Sandro…
- 100 experts répartis sur 4 sites
Lille, Paris, Macôn, Sao Paolo
- Plateformes ecommerce, mobile, tablettes magasins, crm,
marketplace ...
Site web : www.itelios.com
Twitter : @itelios
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Docker c'est quoi ?
- Une sorte de VM allégée
- Basée sur un système d'exploitation
- Installation uniquement de ce qui est nécessaire
- Création d'une « Image » permettant de lancer des « containers »
- Possibilité de partager un dossier, ouvrir un port, lier les containers entre eux, etc..
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
A faire :
En attente
En attente
En attente
En attente
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Container
Le process
Dockerfile Image
Container
BUILD RUN
Container
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Installer docker
wget ­qO­ https://get.docker.com/ | sh
Sur Ubuntu, se loguer dans Ubuntu avec les privilèges « sudo » puis :
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Les principales commandes
docker build ­t <nom_image> .
BUILD
RUN
STOP
RM
docker run ­d ­p 3306:3306 ­v /data/mysql:/var/lib/mysql 
­­name  <nom_image> <nom_du_container>
docker stop <nom_du_container>
docker rm <nom_du_container>
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Créer un container à partir d'une image
docker run busybox /bin/echo hi 
On utilise docker run :
Docker va alors automatiquement récupérer l'image « busybox » et exécuter « /bin/echo hi » au
démarrage.
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Créer sa propre image
Rappel du process :
Dockerfile :
C'est le fichier qui décrit le container
● Sur quel système d'exploitation je me base ?
● Quels applications j'installe ?
● Quels fichier j'ajoute dans mon container et à quel endroit ?
● Quels ports je vais ouvrir ?
● Quels dossiers de mon container vont être partagés et avec quels dossiers de ma machine ?
● Quel port de ma machine va correspondre à un port de mon container ?
● Qu'est ce que je lance au démarrage ?
Container
Dockerfile Image
Container
BUILD RUN
Container
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Creer la base de donnée
Dockerfile
from ubuntu 
RUN apt­get update 
RUN DEBIAN_FRONTEND=noninteractive apt­get ­y dist­upgrade 
RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y mysql­server­5.6 
mysql­client­5.6 expect
ADD ./startup.sh /usr/local/bin/startup.sh
RUN chmod +x /usr/local/bin/startup.sh
VOLUME ["/var/lib/mysql"]
EXPOSE 3306
CMD ["/bin/bash","/usr/local/bin/startup.sh"] 
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
startup.sh
#!/bin/bash
/usr/sbin/service mysql start
/usr/bin/mysqld_safe
sed ­i ­e"s/^bind­addresss*=s*127.0.0.1/bind­address = 0.0.0.0/" 
/etc/mysql/my.cnf
if [ ! ­f /usr/share/mysql/my­default.cnf ] ; then
   cp /etc/mysql/my.cnf /usr/share/mysql/my­default.cnf
fi
mysql_install_db
echo "GRANT ALL ON *.* TO pfay@'%' IDENTIFIED BY 'pfay123' WITH GRANT 
OPTION; FLUSH PRIVILEGES" | mysql
Creer la base de donnée
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
startup.sh
service mysql restart
echo "DROP DATABASE IF EXISTS magento2" > /createdb.sql
mysql < /createdb.sql
echo "CREATE DATABASE IF NOT EXISTS magento2" > /createdb.sql
mysql < /createdb.sql
tail ­f /var/log/*.log
Creer la base de donnée
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Build, Run, Exec
docker build ­t pierrefay/magento2­cloud .
Les commandes à lancer depuis le dossier qui contient le Dockerfile.
Dabord on crée l'image avec la commande « build » :
Puis on lance le container avec la commande « run » à partir de l'image crée précédemment :
On vérifie ensuite que ma base de donnée « magento2 » a bien été crée.
docker run ­­name magento2­cloud ­p 3306:3306 pierrefay/magento2­cloud
# docker exec ­i ­t magento2­cloud mysql ­u pfay ­ppfay123 magento2
mysql> show databases;
+­­­­­­­­­­­­­­­­­­­­+
| Database           |
+­­­­­­­­­­­­­­­­­­­­+
| information_schema |
| magento2           |
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Avancement… 
 √ OK
En attente
En attente
En attente
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Ajouter ZendServer
RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y wget 
RUN wget http://repos.zend.com/zend.key ­O­ |apt­key add ­
RUN echo "deb http://repos.zend.com/zend­server/8.0.2/deb_apache2.4  
server non­free" >> /etc/apt/sources.list.d/zend­server.list
RUN DEBIAN_FRONTEND=noninteractive apt­get update
RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y libapache2­mod­
php­5.6­zend­server zend­server­php­5.6
RUN DEBIAN_FRONTEND=noninteractive /usr/local/zend/bin/zendctl.sh stop
A rajouter dans le Dockerfile les lignes suivantes:
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
EXPOSE 80
EXPOSE 10081 
EXPOSE 10082
Dockerfile (suite)
Ajouter ZendServer
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Dans startup.sh, ajouter tout au début :
export PATH=/usr/local/zend/bin:$PATH
source /etc/zce.rc
Ajouter ZendServer
service zend­server restart
tail ­f /var/log/apache2/*.log > /var/www/html/logs­server.log
Puis à la fin du fichier, on redémarre le serveur et on change le tail -f pour prendre les logs apache.
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
On reteste
docker build ­t pierrefay/magento2­cloud .
Les commandes à lancer depuis le dossier qui contient le Dockerfile.
Dabord on crée l'image avec la commande « build » :
Puis on lance le container avec la commande « run » à partir de l'image crée précédemment :
On voit :
Donc on vérifie que tout fonctionne en se connectant sur :
- http://172.17.0.9/
- http://172.17.0.9:10081/ZendServer/
docker run ­­name magento2­cloud pierrefay/magento2­cloud
domain name, using 172.17.0.9. Set the 'ServerName' directive globally
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Avancement… 
 √ OK
 √ OK
En attente
En attente
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Installer magento2
RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y wget php5 php5­
cli git curl 
RUN DEBIAN_FRONTEND=noninteractive curl ­sS 
https://getcomposer.org/installer | php
 
RUN DEBIAN_FRONTEND=noninteractive mv composer.phar  
/usr/local/bin/composer
ADD ./000­default.conf /etc/apache2/sites­available/000­default.conf
VOLUME ["/var/www/magento2"]
Dockerfile
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
#!/bin/bash
echo $BASE_URL
echo $TOKEN_GITHUB
Installer magento2
On affiche les variables d'environnements (qu'on passera via docker RUN)
startup.sh
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
if [ 'find /var/www/magento2 ­prune ­empty' ]
then
rm ­rf /var/www/magento2
cd /var/www/ && git clone https://github.com/magento/magento2.git 
chmod 755 ­R /var/www/magento2/var/
chmod 755 ­R /var/www/magento2/pub/
chmod 755 ­R /var/www/magento2/app/etc/
chmod 755 ­R /var/www/magento2/media/
cd /var/www/magento2 && composer config ­g github­oauth.github.com 
$TOKEN_GITHUB
cd /var/www/magento2 && composer install ­­no­interaction
cd /var/www/magento2 && composer update
else
echo 'Directory magento2 not empty, skiping installation'
fi
Installer magento2
Si le dossier est vide, on télécharge depuis le repository public de magento2 et on installe avec composer.
startup.sh (suite)
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
php ­f bin/magento setup:install 
    ­­base­url=http://$BASE_URL/  
    ­­backend­frontname=admin 
    ­­db­host=localhost 
    ­­db­name=magento2 
    ­­db­user=pfay 
 ­­db­password=pfay123 
    ­­admin­firstname=Mage  
    ­­admin­lastname=Admin 
    ­­admin­email=admin@example.com  
    ­­admin­user=admin  
    ­­admin­password=admin123 
    ­­language=fr_FR 
    ­­currency=EUR 
    ­­timezone=Europe/Paris
Installer magento2
On installe magento en CLI pour ne pas passer par l'installeur HTTP.
startup.sh (suite)
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
cd /var/www/magento2 && composer config repositories.magento composer 
http://packages.magento.com 
cd /var/www/magento2 && composer require magento/sample­data:0.74.0­
beta12
cd /var/www/magento2 && php ­f bin/magento setup:upgrade
cd /var/www/magento2 && php ­f bin/magento sampledata:install admin
rm  ­rf /var/www/magento2/var/cache/*
chmod 777 ­R /var/www/magento2/var/
chmod 777 ­R /var/www/magento2/pub/
chmod 777 ­R /var/www/magento2/app/etc/
chmod 777 ­R /var/www/magento2/media/
Installer magento2
On installe les samples datas, on redonne les droits puis on vide le cache.
startup.sh (suite et fin)
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
<VirtualHost *:80>
ServerName www.magento2­cloud.lan
ServerAdmin webmaster@localhost
DocumentRoot /var/www/magento2
<Directory /var/www/magento2>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Installer magento2
On crée le fichier 000-default.conf pour faire pointer
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
On reteste
docker build ­t pierrefay/magento2­cloud .
Les commandes à lancer depuis le dossier qui contient le Dockerfile.
Dabord on crée l'image avec la commande « build » :
Puis on lance le container avec la commande « run » à partir de l'image crée précédemment :
On voit :
On rajoute <mon ip> dans /etc/hosts et on se connecte sur www.magento2-cloud.lan
docker run ­­name magento2­cloud 
           ­­env BASE_URL="www.magento2­cloud.lan" 
           ­­env TOKEN_GITHUB="<ma_clef_github_publique>"
           pierrefay/magento2­cloud
domain name, using <mon ip> Set the 'ServerName' directive globally
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Avancement… 
 √ OK
 √ OK
 √ OK
En attente
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Pourquoi Microsoft Azure ?
Crédit Photo : openclassrooms.com
- Déploiement de vos containers docker directement
- Améliorer les performances de votre site
- Adapter les capacités de l'hébergement à vos besoins réels (montée en charge)
temporaire (soldes) ou non, facturation en conséquence
- Avoir très bonne disponibilité
- Avoir une grande réactivité
évolution des capacités de votre hébergement très rapidement, à la demande
- Se concentrer sur l'application, plutôt que sur l'hébergement
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Rendre mon container accessible depuis l'extérieur 
Environnement local
Magento2-cloud
:80 (http)
:10081 (zendserver)
:10082 (zendserver)
:3306 (mysql)
 √ OK 
Environnement Azure
Magento2-cloud
( ???)
:80 (http)
:10081 (zendserver)
:10082 (zendserver)
:3306 (mysql)
Connectes toi à
magento2-cloud.cloudapp.net
(ou magento2-cloud.lan)
X NOK
je retrouve le chemin
de mon container car
il est défini
manuellement
dans /etc/hosts
Environnement local
Je me connecte à la
machine OK,mais
comment je retrouve
ton container ?
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
La solution
Le container est sur un réseaux interne 172.17.0.XXX
Solution: on va « mapper » les ports exposés aux ports du serveur
docker run ­d ­­name magento2­cloud
  ­p 80:80
      ­p 10081:10081
    ­p 10082:10082 
           ­­env BASE_URL="magento2­cloud.cloudapp.net" 
           ­­env TOKEN_GITHUB="<ma_clef_github>"  
           pierrefay/magento2­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Persistance des données
A chaque fois que je redémarre mon container, mes données sont réinitialisées
Solution: on va monter des « volumes » pour « sauvegarder » /var/www/html et /var/lib/mysql/
Puis on va vérifier dans startup.sh si les fichier existent déjà avant de refaire les opérations d'installation
­v /data/magento2­cloud/mysql/:/var/lib/mysql 
­v /data/magento2­cloud/html/:/var/www/magento2 
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Installer Azure CLI
sudo apt­get install npm
sudo apt­get install nodejs­legacy
npm install azure­cli ­g 
Installer le programme pour se connecter via npm
Télécharger les données du compte
<mon_login_Azure> = mon adresse mail, <mon_mdp_Azure> = mon login itelios
azure account download 
info:    Executing command account download
info:    Launching browser to http://go.microsoft.com/fwlink/?LinkId=254432
help:    Save the downloaded file, then execute the command
help:      account import <file>
info:    account download command OK
azure  account import <le_fichier_téléchargé.publishsettings> 
azure  account list
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Créer sa VM Azure
Pour lister les images disponibles pour créer ma VM :
azure vm docker create ­e 22 ­l "North Europe" magento2­cloud 
"<code_de_la_VM>" ­­vm­size Basic_A3 itelios SecretPassword234! 
Pour créer ma VM :
On démarre la VM :
azure vm image list | grep 'Ubuntu_DAILY_BUILD­trusty­'
azure vm start magento2­in­the­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Envoyer un premier container « hello world »
On utilise l'image busybox pour lancer « echo hello world »
L'image n'étant pas présente sur la VM docker va automatiquer faire un « docker pull » pour la récupérer depuis
le docker Hub.
docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls run busybox 
/bin/echo hello world
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Envoyer son container docker sur docker Hub
Docker Hub :
● Repository d'images Docker
● Il est possible d'avoir un Hub privé
● Pour pousser sur le hub : « docker push »
docker push pierrefay/magento2­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
Récupérer son container sur Azure
On récupère l'image depuis le docker hub :
docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls pull 
pierrefay/magento2­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
On lance notre container sur Azure
Docker Hub :
● Repository d'images Docker
● Il est possible d'avoir un Hub privé
● Pour pousser sur le hub : « docker push »
docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls run ­­name 
magento2­cloud 
    ­­env BASE_URL="magento2­cloud.cloudapp.net" 
    ­­env TOKEN_GITHUB="<TOKEN_GITHUB>"              
    ­v /data/magento2­cloud/mysql/:/var/lib/mysql 
    ­v /data/magento2­cloud/html/:/var/www/magento2
    ­p 80:80
   ­p 10081:10081
   ­p 10082:10082
 pierrefay/magento2­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
On ouvre les ports sur la VM
azure vm endpoint create magento2­cloud 80
azure vm endpoint create magento2­cloud 3306
azure vm endpoint create magento2­cloud 10081
azure vm endpoint create magento2­cloud 10082
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
On lance notre container sur Azure
Pour relancer un container : stop + rm + run
run ­­name magento2­cloud 
    ­­env BASE_URL="magento2­cloud.cloudapp.net" 
    ­­env TOKEN_GITHUB="<TOKEN_GITHUB>"              
    ­v /data/magento2­cloud/mysql/:/var/lib/mysql 
    ­v /data/magento2­cloud/html/:/var/www/magento2
    ­p 80:80
   ­p 10081:10081
   ­p 10082:10082
 pierrefay/magento2­cloud
Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
THE END
….maintenant à vous de tester !
Retrouvez les sources de cette conférence sur :
https://github.com/pierrefay/magento2-azure-demo
Retrouvez moi sur :
Twitter : @pierrefay
Blog : pierrefay.fr / pierrefay.com

Contenu connexe

Tendances

Rapport Kernel Linux - Configuration – Compilation & installation
Rapport Kernel Linux - Configuration –  Compilation & installationRapport Kernel Linux - Configuration –  Compilation & installation
Rapport Kernel Linux - Configuration – Compilation & installationAyoub Rouzi
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...Normandie Web Xperts
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)Noël
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7Mame Cheikh Ibra Niang
 
Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Ayoub Rouzi
 
ASFA - Architecture cible du projet COLSA
ASFA - Architecture cible du projet COLSA ASFA - Architecture cible du projet COLSA
ASFA - Architecture cible du projet COLSA Frédéric Sagez
 
Nconf et nsclient pour icinga
Nconf et nsclient pour icingaNconf et nsclient pour icinga
Nconf et nsclient pour icingaWilfried Tiani
 
Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Christophe Villeneuve
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 

Tendances (20)

Serveur Zabbix
Serveur ZabbixServeur Zabbix
Serveur Zabbix
 
Rapport Kernel Linux - Configuration – Compilation & installation
Rapport Kernel Linux - Configuration –  Compilation & installationRapport Kernel Linux - Configuration –  Compilation & installation
Rapport Kernel Linux - Configuration – Compilation & installation
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
#nwxtech9 Rudy Baer et Kevin Vézier - Ansible, l’outil du sysadmin paresseux ...
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)
 
Rapport installation round cube centos 7
Rapport installation round cube centos 7Rapport installation round cube centos 7
Rapport installation round cube centos 7
 
Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30Kernel Linux - Configuration de Wyse - TP wyse x30
Kernel Linux - Configuration de Wyse - TP wyse x30
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
ASFA - Architecture cible du projet COLSA
ASFA - Architecture cible du projet COLSA ASFA - Architecture cible du projet COLSA
ASFA - Architecture cible du projet COLSA
 
Nconf et nsclient pour icinga
Nconf et nsclient pour icingaNconf et nsclient pour icinga
Nconf et nsclient pour icinga
 
Installer icinga
Installer icingaInstaller icinga
Installer icinga
 
Nagios twil
Nagios twilNagios twil
Nagios twil
 
Installation nconf
Installation nconfInstallation nconf
Installation nconf
 
Squid
SquidSquid
Squid
 
Document technique lamp linux
Document technique lamp linuxDocument technique lamp linux
Document technique lamp linux
 
Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
 

En vedette

Webinar Base Plus : Piloter et décider autrement avec la Data Visualisation
Webinar Base Plus : Piloter et décider autrement avec la Data VisualisationWebinar Base Plus : Piloter et décider autrement avec la Data Visualisation
Webinar Base Plus : Piloter et décider autrement avec la Data VisualisationGroupe IDAIA
 
Mise en place et bonnes pratiques d'une approche CRM cross-canal
Mise en place et bonnes pratiques d'une approche CRM cross-canalMise en place et bonnes pratiques d'une approche CRM cross-canal
Mise en place et bonnes pratiques d'une approche CRM cross-canalExperian
 
Thierry Bedoucha - les moteurs de recommandation
Thierry Bedoucha - les moteurs de recommandationThierry Bedoucha - les moteurs de recommandation
Thierry Bedoucha - les moteurs de recommandationWebCampDay
 
CCM Experian-marketing-suite
CCM Experian-marketing-suiteCCM Experian-marketing-suite
CCM Experian-marketing-suiteSimon Butler
 
L’impact d’un défaut sur la fidélisation d’un client
L’impact d’un défaut sur la fidélisation d’un clientL’impact d’un défaut sur la fidélisation d’un client
L’impact d’un défaut sur la fidélisation d’un clientAssisqual
 
Q2 2015 insights on consumer credit trends and the current state of the real ...
Q2 2015 insights on consumer credit trends and the current state of the real ...Q2 2015 insights on consumer credit trends and the current state of the real ...
Q2 2015 insights on consumer credit trends and the current state of the real ...Experian
 
Livre Blanc : Boostez votre service client
Livre Blanc : Boostez votre service clientLivre Blanc : Boostez votre service client
Livre Blanc : Boostez votre service clientSage france
 
Experian and 41st Parameter - 2015 CNP Expo Session
Experian and 41st Parameter - 2015 CNP Expo SessionExperian and 41st Parameter - 2015 CNP Expo Session
Experian and 41st Parameter - 2015 CNP Expo SessionExperian
 
Actividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaActividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaAdalberto
 
Les Francini côté jardin (2014).
Les Francini côté jardin (2014).Les Francini côté jardin (2014).
Les Francini côté jardin (2014).Aurélia Rostaing
 
Intimidad Y Amor
Intimidad Y AmorIntimidad Y Amor
Intimidad Y Amorguestbd2d2
 
1º Pacial Seminario
1º Pacial Seminario1º Pacial Seminario
1º Pacial SeminarioAdalberto
 
MaestíA Diversidad DidáCtica Rousseau El Origen De La Desigualdad
MaestíA Diversidad DidáCtica Rousseau El Origen De La DesigualdadMaestíA Diversidad DidáCtica Rousseau El Origen De La Desigualdad
MaestíA Diversidad DidáCtica Rousseau El Origen De La DesigualdadAdalberto
 
Apoyo A La Asistencia Tecnica 0
Apoyo A La Asistencia Tecnica 0Apoyo A La Asistencia Tecnica 0
Apoyo A La Asistencia Tecnica 0Adalberto
 
Julio Actividad Integradora Para EvaluacióN L, 4º
Julio Actividad Integradora Para EvaluacióN   L, 4ºJulio Actividad Integradora Para EvaluacióN   L, 4º
Julio Actividad Integradora Para EvaluacióN L, 4ºAdalberto
 
Textos Vol.10(2) Unal
Textos Vol.10(2) UnalTextos Vol.10(2) Unal
Textos Vol.10(2) UnalAdam LaRoche
 

En vedette (20)

Webinar Base Plus : Piloter et décider autrement avec la Data Visualisation
Webinar Base Plus : Piloter et décider autrement avec la Data VisualisationWebinar Base Plus : Piloter et décider autrement avec la Data Visualisation
Webinar Base Plus : Piloter et décider autrement avec la Data Visualisation
 
CVmaudvincent
CVmaudvincentCVmaudvincent
CVmaudvincent
 
Mise en place et bonnes pratiques d'une approche CRM cross-canal
Mise en place et bonnes pratiques d'une approche CRM cross-canalMise en place et bonnes pratiques d'une approche CRM cross-canal
Mise en place et bonnes pratiques d'une approche CRM cross-canal
 
Thierry Bedoucha - les moteurs de recommandation
Thierry Bedoucha - les moteurs de recommandationThierry Bedoucha - les moteurs de recommandation
Thierry Bedoucha - les moteurs de recommandation
 
CCM Experian-marketing-suite
CCM Experian-marketing-suiteCCM Experian-marketing-suite
CCM Experian-marketing-suite
 
Experian Marketing Services' Finance Insights Webinar
Experian Marketing Services' Finance Insights WebinarExperian Marketing Services' Finance Insights Webinar
Experian Marketing Services' Finance Insights Webinar
 
L’impact d’un défaut sur la fidélisation d’un client
L’impact d’un défaut sur la fidélisation d’un clientL’impact d’un défaut sur la fidélisation d’un client
L’impact d’un défaut sur la fidélisation d’un client
 
Q2 2015 insights on consumer credit trends and the current state of the real ...
Q2 2015 insights on consumer credit trends and the current state of the real ...Q2 2015 insights on consumer credit trends and the current state of the real ...
Q2 2015 insights on consumer credit trends and the current state of the real ...
 
Livre Blanc : Boostez votre service client
Livre Blanc : Boostez votre service clientLivre Blanc : Boostez votre service client
Livre Blanc : Boostez votre service client
 
Experian and 41st Parameter - 2015 CNP Expo Session
Experian and 41st Parameter - 2015 CNP Expo SessionExperian and 41st Parameter - 2015 CNP Expo Session
Experian and 41st Parameter - 2015 CNP Expo Session
 
Experian Marketing Services Travel Insights Webinar
Experian Marketing Services Travel Insights WebinarExperian Marketing Services Travel Insights Webinar
Experian Marketing Services Travel Insights Webinar
 
Actividades de mayo 2010 margarita
Actividades de mayo 2010 margaritaActividades de mayo 2010 margarita
Actividades de mayo 2010 margarita
 
Les Francini côté jardin (2014).
Les Francini côté jardin (2014).Les Francini côté jardin (2014).
Les Francini côté jardin (2014).
 
Intimidad Y Amor
Intimidad Y AmorIntimidad Y Amor
Intimidad Y Amor
 
Muelles
MuellesMuelles
Muelles
 
1º Pacial Seminario
1º Pacial Seminario1º Pacial Seminario
1º Pacial Seminario
 
MaestíA Diversidad DidáCtica Rousseau El Origen De La Desigualdad
MaestíA Diversidad DidáCtica Rousseau El Origen De La DesigualdadMaestíA Diversidad DidáCtica Rousseau El Origen De La Desigualdad
MaestíA Diversidad DidáCtica Rousseau El Origen De La Desigualdad
 
Apoyo A La Asistencia Tecnica 0
Apoyo A La Asistencia Tecnica 0Apoyo A La Asistencia Tecnica 0
Apoyo A La Asistencia Tecnica 0
 
Julio Actividad Integradora Para EvaluacióN L, 4º
Julio Actividad Integradora Para EvaluacióN   L, 4ºJulio Actividad Integradora Para EvaluacióN   L, 4º
Julio Actividad Integradora Para EvaluacióN L, 4º
 
Textos Vol.10(2) Unal
Textos Vol.10(2) UnalTextos Vol.10(2) Unal
Textos Vol.10(2) Unal
 

Similaire à Déployer Magento2 dans MS Azure avec #zendServer et #docker ! @DarkmiraTour

Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...AbdellahELMAMOUN
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensables
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensablesyOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensables
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensablesBenoit Jester
 
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...Etienne Bailly
 
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...OpenNebula Project
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
Procédure alfresco word
Procédure alfresco wordProcédure alfresco word
Procédure alfresco wordLaetitia HOREL
 
Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Sarah
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 

Similaire à Déployer Magento2 dans MS Azure avec #zendServer et #docker ! @DarkmiraTour (20)

Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec Docker
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensables
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensablesyOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensables
yOS Montpellier - Piloter Office 365 grâce à powershell - Les indispensables
 
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...
Piloter Office 365 grâce à PowerShell - Les indispensables - Benoit Jester - ...
 
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
Déploiement pour l’hébergement d’architecture cliente et mise en place du Sel...
 
Alphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et AdministrationAlphorm.com Formation Nagios et Cacti : Installation et Administration
Alphorm.com Formation Nagios et Cacti : Installation et Administration
 
rapport.pptx
rapport.pptxrapport.pptx
rapport.pptx
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
Procédure alfresco word
Procédure alfresco wordProcédure alfresco word
Procédure alfresco word
 
Configuration des services web sous centOS 5
Configuration des services web sous centOS 5Configuration des services web sous centOS 5
Configuration des services web sous centOS 5
 
Mysql
MysqlMysql
Mysql
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 

Déployer Magento2 dans MS Azure avec #zendServer et #docker ! @DarkmiraTour

  • 1. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés La tête dans les nuages avec ZendServer, Magento2, MS Azure et Docker !
  • 2. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Pierre Fay Expert technique Magento, @Itelios Membre de la Z-Team Blog : www.pierrefay.fr / www.pierrefay.com Twitter : @pierrefay
  • 3. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Spécialiste du commerce connecté et digital Itelios c'est : - Société de service et conseil - Accompagne les distributeurs et les marques Jules, Jennifer, Lacoste, Bizbee, Kenzo, Maje, Sandro… - 100 experts répartis sur 4 sites Lille, Paris, Macôn, Sao Paolo - Plateformes ecommerce, mobile, tablettes magasins, crm, marketplace ... Site web : www.itelios.com Twitter : @itelios
  • 4. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés
  • 5. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Docker c'est quoi ? - Une sorte de VM allégée - Basée sur un système d'exploitation - Installation uniquement de ce qui est nécessaire - Création d'une « Image » permettant de lancer des « containers » - Possibilité de partager un dossier, ouvrir un port, lier les containers entre eux, etc..
  • 6. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés A faire : En attente En attente En attente En attente
  • 7. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Container Le process Dockerfile Image Container BUILD RUN Container
  • 8. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Installer docker wget ­qO­ https://get.docker.com/ | sh Sur Ubuntu, se loguer dans Ubuntu avec les privilèges « sudo » puis :
  • 9. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Les principales commandes docker build ­t <nom_image> . BUILD RUN STOP RM docker run ­d ­p 3306:3306 ­v /data/mysql:/var/lib/mysql  ­­name  <nom_image> <nom_du_container> docker stop <nom_du_container> docker rm <nom_du_container>
  • 10. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Créer un container à partir d'une image docker run busybox /bin/echo hi  On utilise docker run : Docker va alors automatiquement récupérer l'image « busybox » et exécuter « /bin/echo hi » au démarrage.
  • 11. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Créer sa propre image Rappel du process : Dockerfile : C'est le fichier qui décrit le container ● Sur quel système d'exploitation je me base ? ● Quels applications j'installe ? ● Quels fichier j'ajoute dans mon container et à quel endroit ? ● Quels ports je vais ouvrir ? ● Quels dossiers de mon container vont être partagés et avec quels dossiers de ma machine ? ● Quel port de ma machine va correspondre à un port de mon container ? ● Qu'est ce que je lance au démarrage ? Container Dockerfile Image Container BUILD RUN Container
  • 12. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Creer la base de donnée Dockerfile from ubuntu  RUN apt­get update  RUN DEBIAN_FRONTEND=noninteractive apt­get ­y dist­upgrade  RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y mysql­server­5.6  mysql­client­5.6 expect ADD ./startup.sh /usr/local/bin/startup.sh RUN chmod +x /usr/local/bin/startup.sh VOLUME ["/var/lib/mysql"] EXPOSE 3306 CMD ["/bin/bash","/usr/local/bin/startup.sh"] 
  • 13. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés startup.sh #!/bin/bash /usr/sbin/service mysql start /usr/bin/mysqld_safe sed ­i ­e"s/^bind­addresss*=s*127.0.0.1/bind­address = 0.0.0.0/"  /etc/mysql/my.cnf if [ ! ­f /usr/share/mysql/my­default.cnf ] ; then    cp /etc/mysql/my.cnf /usr/share/mysql/my­default.cnf fi mysql_install_db echo "GRANT ALL ON *.* TO pfay@'%' IDENTIFIED BY 'pfay123' WITH GRANT  OPTION; FLUSH PRIVILEGES" | mysql Creer la base de donnée
  • 14. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés startup.sh service mysql restart echo "DROP DATABASE IF EXISTS magento2" > /createdb.sql mysql < /createdb.sql echo "CREATE DATABASE IF NOT EXISTS magento2" > /createdb.sql mysql < /createdb.sql tail ­f /var/log/*.log Creer la base de donnée
  • 15. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Build, Run, Exec docker build ­t pierrefay/magento2­cloud . Les commandes à lancer depuis le dossier qui contient le Dockerfile. Dabord on crée l'image avec la commande « build » : Puis on lance le container avec la commande « run » à partir de l'image crée précédemment : On vérifie ensuite que ma base de donnée « magento2 » a bien été crée. docker run ­­name magento2­cloud ­p 3306:3306 pierrefay/magento2­cloud # docker exec ­i ­t magento2­cloud mysql ­u pfay ­ppfay123 magento2 mysql> show databases; +­­­­­­­­­­­­­­­­­­­­+ | Database           | +­­­­­­­­­­­­­­­­­­­­+ | information_schema | | magento2           |
  • 16. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Avancement…   √ OK En attente En attente En attente
  • 17. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Ajouter ZendServer RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y wget  RUN wget http://repos.zend.com/zend.key ­O­ |apt­key add ­ RUN echo "deb http://repos.zend.com/zend­server/8.0.2/deb_apache2.4   server non­free" >> /etc/apt/sources.list.d/zend­server.list RUN DEBIAN_FRONTEND=noninteractive apt­get update RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y libapache2­mod­ php­5.6­zend­server zend­server­php­5.6 RUN DEBIAN_FRONTEND=noninteractive /usr/local/zend/bin/zendctl.sh stop A rajouter dans le Dockerfile les lignes suivantes:
  • 18. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés EXPOSE 80 EXPOSE 10081  EXPOSE 10082 Dockerfile (suite) Ajouter ZendServer
  • 19. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Dans startup.sh, ajouter tout au début : export PATH=/usr/local/zend/bin:$PATH source /etc/zce.rc Ajouter ZendServer service zend­server restart tail ­f /var/log/apache2/*.log > /var/www/html/logs­server.log Puis à la fin du fichier, on redémarre le serveur et on change le tail -f pour prendre les logs apache.
  • 20. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés On reteste docker build ­t pierrefay/magento2­cloud . Les commandes à lancer depuis le dossier qui contient le Dockerfile. Dabord on crée l'image avec la commande « build » : Puis on lance le container avec la commande « run » à partir de l'image crée précédemment : On voit : Donc on vérifie que tout fonctionne en se connectant sur : - http://172.17.0.9/ - http://172.17.0.9:10081/ZendServer/ docker run ­­name magento2­cloud pierrefay/magento2­cloud domain name, using 172.17.0.9. Set the 'ServerName' directive globally
  • 21. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Avancement…   √ OK  √ OK En attente En attente
  • 22. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Installer magento2 RUN DEBIAN_FRONTEND=noninteractive apt­get install ­y wget php5 php5­ cli git curl  RUN DEBIAN_FRONTEND=noninteractive curl ­sS  https://getcomposer.org/installer | php   RUN DEBIAN_FRONTEND=noninteractive mv composer.phar   /usr/local/bin/composer ADD ./000­default.conf /etc/apache2/sites­available/000­default.conf VOLUME ["/var/www/magento2"] Dockerfile
  • 23. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés #!/bin/bash echo $BASE_URL echo $TOKEN_GITHUB Installer magento2 On affiche les variables d'environnements (qu'on passera via docker RUN) startup.sh
  • 24. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés if [ 'find /var/www/magento2 ­prune ­empty' ] then rm ­rf /var/www/magento2 cd /var/www/ && git clone https://github.com/magento/magento2.git  chmod 755 ­R /var/www/magento2/var/ chmod 755 ­R /var/www/magento2/pub/ chmod 755 ­R /var/www/magento2/app/etc/ chmod 755 ­R /var/www/magento2/media/ cd /var/www/magento2 && composer config ­g github­oauth.github.com  $TOKEN_GITHUB cd /var/www/magento2 && composer install ­­no­interaction cd /var/www/magento2 && composer update else echo 'Directory magento2 not empty, skiping installation' fi Installer magento2 Si le dossier est vide, on télécharge depuis le repository public de magento2 et on installe avec composer. startup.sh (suite)
  • 25. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés php ­f bin/magento setup:install      ­­base­url=http://$BASE_URL/       ­­backend­frontname=admin      ­­db­host=localhost      ­­db­name=magento2      ­­db­user=pfay   ­­db­password=pfay123      ­­admin­firstname=Mage       ­­admin­lastname=Admin      ­­admin­email=admin@example.com       ­­admin­user=admin       ­­admin­password=admin123      ­­language=fr_FR      ­­currency=EUR      ­­timezone=Europe/Paris Installer magento2 On installe magento en CLI pour ne pas passer par l'installeur HTTP. startup.sh (suite)
  • 26. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés cd /var/www/magento2 && composer config repositories.magento composer  http://packages.magento.com  cd /var/www/magento2 && composer require magento/sample­data:0.74.0­ beta12 cd /var/www/magento2 && php ­f bin/magento setup:upgrade cd /var/www/magento2 && php ­f bin/magento sampledata:install admin rm  ­rf /var/www/magento2/var/cache/* chmod 777 ­R /var/www/magento2/var/ chmod 777 ­R /var/www/magento2/pub/ chmod 777 ­R /var/www/magento2/app/etc/ chmod 777 ­R /var/www/magento2/media/ Installer magento2 On installe les samples datas, on redonne les droits puis on vide le cache. startup.sh (suite et fin)
  • 27. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés <VirtualHost *:80> ServerName www.magento2­cloud.lan ServerAdmin webmaster@localhost DocumentRoot /var/www/magento2 <Directory /var/www/magento2>         Options Indexes FollowSymLinks MultiViews         AllowOverride All         Order allow,deny         allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Installer magento2 On crée le fichier 000-default.conf pour faire pointer
  • 28. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés On reteste docker build ­t pierrefay/magento2­cloud . Les commandes à lancer depuis le dossier qui contient le Dockerfile. Dabord on crée l'image avec la commande « build » : Puis on lance le container avec la commande « run » à partir de l'image crée précédemment : On voit : On rajoute <mon ip> dans /etc/hosts et on se connecte sur www.magento2-cloud.lan docker run ­­name magento2­cloud             ­­env BASE_URL="www.magento2­cloud.lan"             ­­env TOKEN_GITHUB="<ma_clef_github_publique>"            pierrefay/magento2­cloud domain name, using <mon ip> Set the 'ServerName' directive globally
  • 29. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Avancement…   √ OK  √ OK  √ OK En attente
  • 30. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Pourquoi Microsoft Azure ? Crédit Photo : openclassrooms.com - Déploiement de vos containers docker directement - Améliorer les performances de votre site - Adapter les capacités de l'hébergement à vos besoins réels (montée en charge) temporaire (soldes) ou non, facturation en conséquence - Avoir très bonne disponibilité - Avoir une grande réactivité évolution des capacités de votre hébergement très rapidement, à la demande - Se concentrer sur l'application, plutôt que sur l'hébergement
  • 31. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Rendre mon container accessible depuis l'extérieur  Environnement local Magento2-cloud :80 (http) :10081 (zendserver) :10082 (zendserver) :3306 (mysql)  √ OK  Environnement Azure Magento2-cloud ( ???) :80 (http) :10081 (zendserver) :10082 (zendserver) :3306 (mysql) Connectes toi à magento2-cloud.cloudapp.net (ou magento2-cloud.lan) X NOK je retrouve le chemin de mon container car il est défini manuellement dans /etc/hosts Environnement local Je me connecte à la machine OK,mais comment je retrouve ton container ?
  • 32. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés La solution Le container est sur un réseaux interne 172.17.0.XXX Solution: on va « mapper » les ports exposés aux ports du serveur docker run ­d ­­name magento2­cloud   ­p 80:80       ­p 10081:10081     ­p 10082:10082             ­­env BASE_URL="magento2­cloud.cloudapp.net"             ­­env TOKEN_GITHUB="<ma_clef_github>"              pierrefay/magento2­cloud
  • 33. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Persistance des données A chaque fois que je redémarre mon container, mes données sont réinitialisées Solution: on va monter des « volumes » pour « sauvegarder » /var/www/html et /var/lib/mysql/ Puis on va vérifier dans startup.sh si les fichier existent déjà avant de refaire les opérations d'installation ­v /data/magento2­cloud/mysql/:/var/lib/mysql  ­v /data/magento2­cloud/html/:/var/www/magento2 
  • 34. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Installer Azure CLI sudo apt­get install npm sudo apt­get install nodejs­legacy npm install azure­cli ­g  Installer le programme pour se connecter via npm Télécharger les données du compte <mon_login_Azure> = mon adresse mail, <mon_mdp_Azure> = mon login itelios azure account download  info:    Executing command account download info:    Launching browser to http://go.microsoft.com/fwlink/?LinkId=254432 help:    Save the downloaded file, then execute the command help:      account import <file> info:    account download command OK azure  account import <le_fichier_téléchargé.publishsettings>  azure  account list
  • 35. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Créer sa VM Azure Pour lister les images disponibles pour créer ma VM : azure vm docker create ­e 22 ­l "North Europe" magento2­cloud  "<code_de_la_VM>" ­­vm­size Basic_A3 itelios SecretPassword234!  Pour créer ma VM : On démarre la VM : azure vm image list | grep 'Ubuntu_DAILY_BUILD­trusty­' azure vm start magento2­in­the­cloud
  • 36. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Envoyer un premier container « hello world » On utilise l'image busybox pour lancer « echo hello world » L'image n'étant pas présente sur la VM docker va automatiquer faire un « docker pull » pour la récupérer depuis le docker Hub. docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls run busybox  /bin/echo hello world
  • 37. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Envoyer son container docker sur docker Hub Docker Hub : ● Repository d'images Docker ● Il est possible d'avoir un Hub privé ● Pour pousser sur le hub : « docker push » docker push pierrefay/magento2­cloud
  • 38. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés Récupérer son container sur Azure On récupère l'image depuis le docker hub : docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls pull  pierrefay/magento2­cloud
  • 39. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés On lance notre container sur Azure Docker Hub : ● Repository d'images Docker ● Il est possible d'avoir un Hub privé ● Pour pousser sur le hub : « docker push » docker ­H tcp://magento2­cloud.cloudapp.net:4243 ­­tls run ­­name  magento2­cloud      ­­env BASE_URL="magento2­cloud.cloudapp.net"      ­­env TOKEN_GITHUB="<TOKEN_GITHUB>"                   ­v /data/magento2­cloud/mysql/:/var/lib/mysql      ­v /data/magento2­cloud/html/:/var/www/magento2     ­p 80:80    ­p 10081:10081    ­p 10082:10082  pierrefay/magento2­cloud
  • 40. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés On ouvre les ports sur la VM azure vm endpoint create magento2­cloud 80 azure vm endpoint create magento2­cloud 3306 azure vm endpoint create magento2­cloud 10081 azure vm endpoint create magento2­cloud 10082
  • 41. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservésCopyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés On lance notre container sur Azure Pour relancer un container : stop + rm + run run ­­name magento2­cloud      ­­env BASE_URL="magento2­cloud.cloudapp.net"      ­­env TOKEN_GITHUB="<TOKEN_GITHUB>"                   ­v /data/magento2­cloud/mysql/:/var/lib/mysql      ­v /data/magento2­cloud/html/:/var/www/magento2     ­p 80:80    ­p 10081:10081    ­p 10082:10082  pierrefay/magento2­cloud
  • 42. Copyright © 2003 - 2015 • ITELIOS SAS • Tous droits réservés THE END ….maintenant à vous de tester ! Retrouvez les sources de cette conférence sur : https://github.com/pierrefay/magento2-azure-demo Retrouvez moi sur : Twitter : @pierrefay Blog : pierrefay.fr / pierrefay.com