1. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservs La tte
dans les nuages avec ZendServer, Magento2, MS Azure et Docker!
2. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs 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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Spcialiste du commerce connect et digital Itelios c'est : - Socit
de service et conseil - Accompagne les distributeurs et les marques
Jules, Jennifer, Lacoste, Bizbee, Kenzo, Maje, Sandro - 100 experts
rpartis sur 4 sites Lille, Paris, Macn, Sao Paolo - Plateformes
ecommerce, mobile, tablettes magasins, crm, marketplace ... Site
web : www.itelios.com Twitter : @itelios
4. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
5. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Docker
c'est quoi? - Une sorte de VM allge - Base sur un systme
d'exploitation - Installation uniquement de ce qui est ncessaire -
Cration 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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs A faire:
Enattente Enattente Enattente Enattente
7. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Container Le process Dockerfile Image Container BUILD RUN
Container
8. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Installer docker wgetqOhttps://get.docker.com/|sh Sur Ubuntu, se
loguer dans Ubuntu avec les privilges sudo puis :
9. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Les
principales commandes dockerbuildt. BUILD RUN STOP RM
dockerrundp3306:3306v/data/mysql:/var/lib/mysql name dockerstop
dockerrm
10. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer un
container partir d'une image dockerrunbusybox/bin/echohi On utilise
docker run : Docker va alors automatiquement rcuprer l'image
busybox et excuter /bin/echo hi au dmarrage.
11. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer sa
propre image Rappel du process : Dockerfile : C'est le fichier qui
dcrit le container Sur quel systme 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 partags 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 dmarrage ? Container
Dockerfile Image Container BUILD RUN Container
12. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Creer la
base de donne Dockerfile fromubuntu RUNaptgetupdate
RUNDEBIAN_FRONTEND=noninteractiveaptgetydistupgrade
RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallymysqlserver5.6
mysqlclient5.6expect ADD./startup.sh/usr/local/bin/startup.sh
RUNchmod+x/usr/local/bin/startup.sh VOLUME["/var/lib/mysql"]
EXPOSE3306 CMD["/bin/bash","/usr/local/bin/startup.sh"]
13. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
startup.sh #!/bin/bash /usr/sbin/servicemysqlstart
/usr/bin/mysqld_safe
sedie"s/^bindaddresss*=s*127.0.0.1/bindaddress=0.0.0.0/"
/etc/mysql/my.cnf if[!f/usr/share/mysql/mydefault.cnf];then
cp/etc/mysql/my.cnf/usr/share/mysql/mydefault.cnf fi
mysql_install_db
echo"GRANTALLON*.*TOpfay@'%'IDENTIFIEDBY'pfay123'WITHGRANT
OPTION;FLUSHPRIVILEGES"|mysql Creer la base de donne
14. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
startup.sh servicemysqlrestart
echo"DROPDATABASEIFEXISTSmagento2">/createdb.sql
mysql/createdb.sql mysqlshowdatabases; ++ |Database| ++
|information_schema| |magento2|
16. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Avancement OK Enattente Enattente Enattente
17. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Ajouter
ZendServer RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallywget
RUNwgethttp://repos.zend.com/zend.keyO|aptkeyadd
RUNecho"debhttp://repos.zend.com/zendserver/8.0.2/deb_apache2.4
servernonfree">>/etc/apt/sources.list.d/zendserver.list
RUNDEBIAN_FRONTEND=noninteractiveaptgetupdate
RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallylibapache2mod
php5.6zendserverzendserverphp5.6
RUNDEBIAN_FRONTEND=noninteractive/usr/local/zend/bin/zendctl.shstop
A rajouter dans le Dockerfile les lignes suivantes:
18. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs EXPOSE80
EXPOSE10081 EXPOSE10082 Dockerfile (suite) Ajouter ZendServer
19. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Dans
startup.sh, ajouter tout au dbut :
exportPATH=/usr/local/zend/bin:$PATH source/etc/zce.rc Ajouter
ZendServer servicezendserverrestart
tailf/var/log/apache2/*.log>/var/www/html/logsserver.log Puis la
fin du fichier, on redmarre le serveur et on change le tail -f pour
prendre les logs apache.
20. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On
reteste dockerbuildtpierrefay/magento2cloud. Les commandes lancer
depuis le dossier qui contient le Dockerfile. Dabord on cre l'image
avec la commande build : Puis on lance le container avec la
commande run partir de l'image cre prcdemment : On voit : Donc on
vrifie que tout fonctionne en se connectant sur : -
http://172.17.0.9/ - http://172.17.0.9:10081/ZendServer/
dockerrunnamemagento2cloudpierrefay/magento2cloud
domainname,using172.17.0.9.Setthe'ServerName'directiveglobally
21. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Avancement OK OK Enattente Enattente
22. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Installer magento2
RUNDEBIAN_FRONTEND=noninteractiveaptgetinstallywgetphp5php5
cligitcurl RUNDEBIAN_FRONTEND=noninteractivecurlsS
https://getcomposer.org/installer|php
RUNDEBIAN_FRONTEND=noninteractivemvcomposer.phar
/usr/local/bin/composer
ADD./000default.conf/etc/apache2/sitesavailable/000default.conf
VOLUME["/var/www/magento2"] Dockerfile
23. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
#!/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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
if['find/var/www/magento2pruneempty'] then rmrf/var/www/magento2
cd/var/www/&&gitclonehttps://github.com/magento/magento2.git
chmod755R/var/www/magento2/var/ chmod755R/var/www/magento2/pub/
chmod755R/var/www/magento2/app/etc/
chmod755R/var/www/magento2/media/
cd/var/www/magento2&&composerconfigggithuboauth.github.com
$TOKEN_GITHUB
cd/var/www/magento2&&composerinstallnointeraction
cd/var/www/magento2&&composerupdate else
echo'Directorymagento2notempty,skipinginstallation' fi Installer
magento2 Si le dossier est vide, on tlcharge depuis le repository
public de magento2 et on installe avec composer. startup.sh
(suite)
25. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
phpfbin/magentosetup:install baseurl=http://$BASE_URL/
backendfrontname=admin dbhost=localhost dbname=magento2 dbuser=pfay
dbpassword=pfay123 adminfirstname=Mage adminlastname=Admin
[email protected] adminuser=admin adminpassword=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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
cd/var/www/magento2&&composerconfigrepositories.magentocomposer
http://packages.magento.com
cd/var/www/magento2&&composerrequiremagento/sampledata:0.74.0
beta12 cd/var/www/magento2&&phpfbin/magentosetup:upgrade
cd/var/www/magento2&&phpfbin/magentosampledata:installadmin
rmrf/var/www/magento2/var/cache/* chmod777R/var/www/magento2/var/
chmod777R/var/www/magento2/pub/ chmod777R/var/www/magento2/app/etc/
chmod777R/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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
ServerNamewww.magento2cloud.lan ServerAdminwebmaster@localhost
DocumentRoot/var/www/magento2
OptionsIndexesFollowSymLinksMultiViews AllowOverrideAll
Orderallow,deny allowfromall ErrorLog${APACHE_LOG_DIR}/error.log
CustomLog${APACHE_LOG_DIR}/access.logcombined Installer magento2 On
cre le fichier 000-default.conf pour faire pointer
28. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On
reteste dockerbuildtpierrefay/magento2cloud. Les commandes lancer
depuis le dossier qui contient le Dockerfile. Dabord on cre l'image
avec la commande build : Puis on lance le container avec la
commande run partir de l'image cre prcdemment : On voit : On
rajoute dans /etc/hosts et on se connecte sur
www.magento2-cloud.lan dockerrunnamemagento2cloud
envBASE_URL="www.magento2cloud.lan" envTOKEN_GITHUB=""
pierrefay/magento2cloud
domainname,usingSetthe'ServerName'directiveglobally
29. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Avancement OK OK OK Enattente
30. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
PourquoiMicrosoft Azure? Crdit Photo : openclassrooms.com -
Dploiement de vos containers docker directement - Amliorer les
performances de votre site - Adapter les capacits de l'hbergement
vos besoins rels (monte en charge) temporaire (soldes) ou non,
facturation en consquence - Avoir trs bonne disponibilit - Avoir
une grande ractivit volution des capacits de votre hbergement trs
rapidement, la demande - Se concentrer sur l'application, plutt que
sur l'hbergement
31. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Rendre
mon container accessibledepuis l'extrieur 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)
XNOK je retrouve le chemin de mon container car il est dfini
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
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs La
solution Le container est sur un rseaux interne 172.17.0.XXX
Solution: on va mapper les ports exposs aux ports du serveur
dockerrundnamemagento2cloud p80:80 p10081:10081 p10082:10082
envBASE_URL="magento2cloud.cloudapp.net" envTOKEN_GITHUB=""
pierrefay/magento2cloud
33. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Persistance des donnes A chaque fois que je redmarre mon container,
mes donnes sont rinitialises Solution: on va monter des volumes
pour sauvegarder /var/www/html et /var/lib/mysql/ Puis on va
vrifier dans startup.sh si les fichier existent dj avant de refaire
les oprations d'installation
v/data/magento2cloud/mysql/:/var/lib/mysql
v/data/magento2cloud/html/:/var/www/magento2
34. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs
Installer Azure CLI sudoaptgetinstallnpm
sudoaptgetinstallnodejslegacy npminstallazureclig Installer le
programme pour se connecter via npm Tlcharger les donnes du compte
= mon adresse mail, = mon login itelios azureaccountdownload
info:Executingcommandaccountdownload
info:Launchingbrowsertohttp://go.microsoft.com/fwlink/?LinkId=254432
help:Savethedownloadedfile,thenexecutethecommand help:accountimport
info:accountdownloadcommandOK azureaccountimport
azureaccountlist
35. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Crer sa
VM Azure Pour lister les images disponibles pour crer ma VM :
azurevmdockercreatee22l"NorthEurope"magento2cloud
""vmsizeBasic_A3iteliosSecretPassword234! Pour crer ma VM : On
dmarre la VM : azurevmimagelist|grep'Ubuntu_DAILY_BUILDtrusty'
azurevmstartmagento2inthecloud
36. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Envoyer
un premier container hello world On utilise l'image busybox pour
lancer echo hello world L'image n'tant pas prsente sur la VM docker
va automatiquer faire un docker pull pour la rcuprer depuis le
docker Hub.
dockerHtcp://magento2cloud.cloudapp.net:4243tlsrunbusybox
/bin/echohelloworld
37. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs 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 dockerpushpierrefay/magento2cloud
38. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs Rcuprer
son container sur Azure On rcupre l'image depuis le docker hub :
dockerHtcp://magento2cloud.cloudapp.net:4243tlspull
pierrefay/magento2cloud
39. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs 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 dockerHtcp://magento2cloud.cloudapp.net:4243tlsrunname
magento2cloud envBASE_URL="magento2cloud.cloudapp.net"
envTOKEN_GITHUB="" v/data/magento2cloud/mysql/:/var/lib/mysql
v/data/magento2cloud/html/:/var/www/magento2 p80:80 p10081:10081
p10082:10082 pierrefay/magento2cloud
40. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On ouvre
les ports sur la VM azurevmendpointcreatemagento2cloud80
azurevmendpointcreatemagento2cloud3306
azurevmendpointcreatemagento2cloud10081
azurevmendpointcreatemagento2cloud10082
41. Copyright 2003 - 2015 ITELIOS SAS Tous droits
rservsCopyright 2003 - 2015 ITELIOS SAS Tous droits rservs On lance
notre container sur Azure Pour relancer un container : stop + rm +
run runnamemagento2cloud envBASE_URL="magento2cloud.cloudapp.net"
envTOKEN_GITHUB="" v/data/magento2cloud/mysql/:/var/lib/mysql
v/data/magento2cloud/html/:/var/www/magento2 p80:80 p10081:10081
p10082:10082 pierrefay/magento2cloud
42. Copyright 2003 - 2015 ITELIOS SAS Tous droits rservs THE
END .maintenant vous de tester! Retrouvez les sources de cette
confrence sur: https://github.com/pierrefay/magento2-azure-demo
Retrouvez moi sur: Twitter: @pierrefay Blog: pierrefay.fr /
pierrefay.com