Merci pour la vidéo que j'ai regardé 2 fois. Une des meilleures de la chaine pour moi car c'est assez simple mais très pratique par rapport à ce que je fais sans conteneur!
En regardant les sources dans GitLab : c'est bien identique. J'avais fait une erreur dans l'un des affichages.php autant pour moi. De plus c'est autre chose : dans le rollon.sh c'est #!/bin/bash Avant /bin/sh pointait sur /bin/bash et par habitude je met souvent #!/bin/sh mais maintenant /bin/sh pointe sur sur dash qui ne permet pas de faire l'incrémentation avec la syntaxe de bash. Ceci est peut-être du au fait que j'utilise Debian au lien de ubuntu. Je n'avais donc pas d'incrémentation. J'arrive au fonctionnement identique au votre mais je trouve un peu bizarre cette histoire d'écrasement de index.hml. Bon passons.
Bonsoir Xavier il y’a deux jours je viens de finir votre formation sur awk que j’ai trouvé super utile et en plus je suis débutant merci encore pour tout ton travail et je suis à fond sur DOKER avant d’aller finir avec le script J’aimerais avoir tes conseils et cel des autres abonnés aussi à propos du parcourt que je dois suivre Merci 🙏🏾
Bonjour xavki et merci pour tes contenus . aurais une présentation genre micro services avancées ou avec des outils plus concrets que de simple script ? Genre un logstash ...
Merci beaucoup pour toutes tes vidéos Xavier 🙏 Question d'un néophyte : Pourquoi créer une image serviceweb en se basant sur ubuntu et y intégrer nginx ? Et pas une image en se basant directement sur nginx ?
Nicolas MATELOT hello très bonne remarque. Non il ne faut pas faire ce que je fais c’est juste pour manipuler un peu plus. Mais la bonne pratique est d’utiliser l’image dédiée au process. Je ne me rappelais plus avoir fait ca.
Merci beaucoup pour cette vidéo très claire ! Petite question : quand j'utilise l'adresse IP récupérée à partir de la commande docker inspect, je n'arrive pas à ouvrir le site sur le navigateur, à quoi cela peut être dû ?
Super intéressant... Une petite question, surement idiote : lors du run des workers tu spécifies un volume du containeur du server web qui est lui monté sur un répertoire du host. En quoi est ce mieux de procéder ainsi plutot que de faire en sorte que tes workers montent aussi un volume depuis le même répertoire du host ?
@@xavki Oui désolé, je me doutais que ma description n'était pas limpide. En gros lorsque tu run les images worker1 et 2 tu mount un volume situé dans le container site , mais tu aurais pu aussi monter le volume directement sur /var/www/html/ (ce qui aurait donc fait 3 containers qui avaient un volume sur /var/www/html/ : site, worker 1 et worker 2 ...) Je me demandais si monter un volume sur un autre container plutôt que vers le host avait un intérêt dans ce cas là, simple curiosité :-) J'espère que c'est plus clair !
Avec Docker, un conteneur = processus. Avec daemon=off, nginx ne démarre pas en arrière plan et comme le dit xavki Docker pourra le gérer directement (il aura directement la main dessus). SAV xavki à votre écoute.
merci Xavki mais j'ai un souci. quant je réinitialise la page index il y a pas d'effet. pas de message ni de variable incrémenter. j’aimerais bien avoir une petite explication sur cette ligne: php /affichage.php. je ne la comprend vraiment pas
@@xavki merci svp pourquoi donc j'ai pas de modifications sur la page index??? Pas de variable incrémenter, rien rien il continu d'afficher "welcom to nginx"
Bonjour, Je n'ai rien compris parce que j'estime que ce n'est pas clair: 1/ 2 scripts identiques mais qui ont un plan d’exécution différent écrivent 2 fichiers .txt : worker1.txt et worker2.txt 2/ affichage.php dont vous n'affichez pas le contenu pour chaque worker écrit dans le même descripteur fichier au final bien qu'il s'agisse de descripteur dans un container différent le fichier destination est sur le même volume. Donc, ce qu'on processus worker va écrire l'autre va l'écraser, non? Seulement comme vous n'affichez pas le contenu de chaque script pour chaque workers précisément, j'ai peut-être loupé quelque-chose. J'ai donc comme résultat ce qui était à prévoir : une écriture concurrente. Tantôt la ligne worker1 s'affiche 2 fois tantôt c'est worker 2, tantot c'est la 2 avant la 1 etc... Pourriez-vous être plus précis dans le contenu des scripts pour chaque conteneur. D'avance, je vous remercie. jean-yves.
Merci pour les vidéos. Je suis nouveau sur Docker et je me pose pas mal de questions, tout n'est pas évident pour un profane J'aimerais savoir: dans le Dockerfile, comment on fait pour savoir ce qui est précisé pour VOLUME ? (Là c'était VOLUME /var/www/html/) Faut-il à la base connaître l'arborescence dans le conteneur ? Ou bien on peut mettre ce qu'on veut, conformément à la structure qu'on souhaite ? Merci d'avance pour vos réponses
Bonjour les deux sont possibles. Soit en montant des répertoires déjà existants dans le conteneur et qui seront alors aussi présents à l'extérieur. Soit si il n'existe pas le répertoire sera vide. Les répertoires doivent exister pour monter un volume en revanche.
@@xavki merci beaucoup pour le retour. Les vidéos sont super j'apprends plein de trucs J'aimerais également savoir comment sont gérés les adresses ip lorsqu'on utilise docker sous mac. Je m'explique: par exemple lorsqu'on utilise les adresses renvoyées après un docker inspect, on n'a pas d'accès; ça marche uniquement avec localhost et si on a précisé des ports... Y a t il d'autres solutions?
Superbes tes vidéos ! Sous mac je vois bien le volume /var/www/html partagé entre 'worker1' et 'worker2' par contre 'site' ne pointe pas vers ce répertoire partagé et possède son propre /var/www/html. C'est étrange :) $ docker exec -ti worker1 /bin/bash $ touch /var/www/html/fromw1 $ docker exec -ti worker2 /bin/bash $ touch /var/www/html/fromw2 $ docker exec -ti site /bin/bash $ ls /var/www/html Je ne vois pas mes fromw1 ni fromw2 depuis site. Par contre depuis worker1 et worker2 je vois bien le meme /var/www/html (dans worker1 je vois fromw1 et fromw2 et dans worker2 aussi)
salut, j'ai suivi le tutoriel a la lettre , et lorsque j'entre l'ip de mon conteneur dans l'url, j'obtiens "Ce site est inaccessible 172.19.0.2 a mis trop de temps à répondre."
Je rentre dans mon container via la commande : "docker exec -it nginx_container bash" et lorsque j'entre la commande "nginx" j'obtiens ceci : "root@2dfb9d37d342:/# nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) ..."
On peut supposer que je demande de lancer un autre nginx mais que le 1er nginx utilise deja ce port, mais quand je fais la commande ps, je n'ai aucun processus nginx en cours (il y a seulement bash et ps)
j'ai aussi : root@3685abe50e33:/# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.11:38491 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro tcp6 0 0 :::80 :::* LISTEN 1/nginx: master pro udp 0 0 127.0.0.11:53869 0.0.0.0:* - Donc visiblement il y a bien un processus nginx sur le port 80. Mais ça marche pas 😢
par contre quand j'ecris "docker run -tid -p 80:80 --name site serveurweb", je peux acceder a la page nginx en entrant comme url "localhost" mais ca ne fonctionne pas quand je rentre l'ip du container
sur ubuntu j'ai ajouter avant le premier apt-get : RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections RUN apt-get update RUN apt-get install -y apt-utils pour éviter des messages en rouge !
Merci pour la vidéo que j'ai regardé 2 fois. Une des meilleures de la chaine pour moi car c'est assez simple mais très pratique par rapport à ce que je fais sans conteneur!
Ah cool je la voyais pas si importante. Après c'est vrai que c'est le manière ultra simpliste de présenter les microservices. Bonne journée
Merci Xavier
Est-ce que tu peux détailler cette partie stp
Comment faire pour créer les deux Dockerfile
En regardant les sources dans GitLab : c'est bien identique.
J'avais fait une erreur dans l'un des affichages.php autant pour moi.
De plus c'est autre chose : dans le rollon.sh c'est #!/bin/bash
Avant /bin/sh pointait sur /bin/bash et par habitude je met souvent #!/bin/sh
mais maintenant /bin/sh pointe sur sur dash qui ne permet pas de faire l'incrémentation avec
la syntaxe de bash.
Ceci est peut-être du au fait que j'utilise Debian au lien de ubuntu.
Je n'avais donc pas d'incrémentation.
J'arrive au fonctionnement identique au votre mais je trouve un peu bizarre cette histoire d'écrasement de index.hml.
Bon passons.
Bonsoir Xavier il y’a deux jours je viens de finir votre formation sur awk que j’ai trouvé super utile et en plus je suis débutant merci encore pour tout ton travail et je suis à fond sur DOKER avant d’aller finir avec le script
J’aimerais avoir tes conseils et cel des autres abonnés aussi à propos du parcourt que je dois suivre
Merci 🙏🏾
Merci mille fois pour l’explication :)
Avec plaisir. C'est ultra simplifié pour le côté pédagogique mais c'est pour initier un peu.
Bonjour xavki et merci pour tes contenus . aurais une présentation genre micro services avancées ou avec des outils plus concrets que de simple script ? Genre un logstash ...
Hello. C'était prévu mais je suis passé à autre chose. Logstash ce n'est pas tout à fait du microservice.
Merci beaucoup pour toutes tes vidéos Xavier 🙏
Question d'un néophyte :
Pourquoi créer une image serviceweb en se basant sur ubuntu et y intégrer nginx ?
Et pas une image en se basant directement sur nginx ?
Nicolas MATELOT hello très bonne remarque. Non il ne faut pas faire ce que je fais c’est juste pour manipuler un peu plus. Mais la bonne pratique est d’utiliser l’image dédiée au process. Je ne me rappelais plus avoir fait ca.
Merci beaucoup pour cette vidéo très claire !
Petite question : quand j'utilise l'adresse IP récupérée à partir de la commande docker inspect, je n'arrive pas à ouvrir le site sur le navigateur, à quoi cela peut être dû ?
Utilises tu linux ou Windows ?
@@xavki Mon pc est sous Windows, et j'utilise Linux via MobaXTerm
@@foive0325 cela vient de là l'accès aux containers via Windows n'est pas possible de la même manière. Après je connais pas dsl'
@@xavki Ca marche, merci pour ta réponse et bonne journée :)
Merci Pour cette vidéo 👍
Bonjour Xavki
L'accès via ip du conteneur nemarche pas
je suis sur un mac
Bonjour oui mac ou Windows c'est particulier. Je connais pas dsl. ++
Super intéressant...
Une petite question, surement idiote : lors du run des workers tu spécifies un volume du containeur du server web qui est lui monté sur un répertoire du host. En quoi est ce mieux de procéder ainsi plutot que de faire en sorte que tes workers montent aussi un volume depuis le même répertoire du host ?
EDIT : ah j'ai peut-être la réponse dans la vidéo 2 : question de sécurité, cela permet de ne monter qu'une seule le volume ?
Jc hello, merci. Tu peux reformuler j’ai pas compris je suis désolé ?
@@xavki Oui désolé, je me doutais que ma description n'était pas limpide.
En gros lorsque tu run les images worker1 et 2 tu mount un volume situé dans le container site , mais tu aurais pu aussi monter le volume directement sur /var/www/html/
(ce qui aurait donc fait 3 containers qui avaient un volume sur /var/www/html/ : site, worker 1 et worker 2 ...)
Je me demandais si monter un volume sur un autre container plutôt que vers le host avait un intérêt dans ce cas là, simple curiosité :-)
J'espère que c'est plus clair !
Bonjour Xavier, merci pour la video.
J'aimerais savoir pourquoi vous avez mis le deamon nginx sur off pour le conteneur web ?
Comme ça je ne sais plus te dire désolé
Avec Docker, un conteneur = processus.
Avec daemon=off, nginx ne démarre pas en arrière plan et comme le dit xavki Docker pourra le gérer directement (il aura directement la main dessus).
SAV xavki à votre écoute.
Merci Nicolas
bravo et merci
merci Xavki mais j'ai un souci. quant je réinitialise la page index il y a pas d'effet. pas de message ni de variable incrémenter. j’aimerais bien avoir une petite explication sur cette ligne: php /affichage.php.
je ne la comprend vraiment pas
" php /affichage.php" j’ai comme impression que c'est elle qui fait problème.
idriss tafo
Bonjour cette ligne sert simplement à lancer un script php à partir d’un bash
@@xavki merci svp pourquoi donc j'ai pas de modifications sur la page index??? Pas de variable incrémenter, rien rien il continu d'afficher "welcom to nginx"
@@idrisstafo2095 pareil que toi j'ai toujours la. Page de base de nginx
Bonjour,
Je n'ai rien compris parce que j'estime que ce n'est pas clair:
1/ 2 scripts identiques mais qui ont un plan d’exécution différent écrivent 2 fichiers .txt : worker1.txt et worker2.txt
2/ affichage.php dont vous n'affichez pas le contenu pour chaque worker écrit dans le même descripteur fichier au final bien qu'il s'agisse de descripteur dans un container différent le fichier destination est sur le même volume.
Donc, ce qu'on processus worker va écrire l'autre va l'écraser, non?
Seulement comme vous n'affichez pas le contenu de chaque script pour chaque workers précisément, j'ai peut-être loupé quelque-chose.
J'ai donc comme résultat ce qui était à prévoir : une écriture concurrente.
Tantôt la ligne worker1 s'affiche 2 fois tantôt c'est worker 2, tantot c'est la 2 avant la 1 etc...
Pourriez-vous être plus précis dans le contenu des scripts pour chaque conteneur.
D'avance, je vous remercie.
jean-yves.
Tiens pourquoi ne pas partir de l'image nginx sur le DockerHub :o
C'est juste pour manipuler tu as raison
Merci pour les vidéos.
Je suis nouveau sur Docker et je me pose pas mal de questions, tout n'est pas évident pour un profane
J'aimerais savoir: dans le Dockerfile, comment on fait pour savoir ce qui est précisé pour VOLUME ? (Là c'était VOLUME /var/www/html/) Faut-il à la base connaître l'arborescence dans le conteneur ? Ou bien on peut mettre ce qu'on veut, conformément à la structure qu'on souhaite ?
Merci d'avance pour vos réponses
Bonjour les deux sont possibles. Soit en montant des répertoires déjà existants dans le conteneur et qui seront alors aussi présents à l'extérieur. Soit si il n'existe pas le répertoire sera vide. Les répertoires doivent exister pour monter un volume en revanche.
@@xavki merci beaucoup pour le retour. Les vidéos sont super j'apprends plein de trucs
J'aimerais également savoir comment sont gérés les adresses ip lorsqu'on utilise docker sous mac. Je m'explique: par exemple lorsqu'on utilise les adresses renvoyées après un docker inspect, on n'a pas d'accès; ça marche uniquement avec localhost et si on a précisé des ports... Y a t il d'autres solutions?
Superbes tes vidéos !
Sous mac je vois bien le volume /var/www/html partagé entre 'worker1' et 'worker2' par contre 'site' ne pointe pas vers ce répertoire partagé et possède son propre /var/www/html. C'est étrange :)
$ docker exec -ti worker1 /bin/bash
$ touch /var/www/html/fromw1
$ docker exec -ti worker2 /bin/bash
$ touch /var/www/html/fromw2
$ docker exec -ti site /bin/bash
$ ls /var/www/html
Je ne vois pas mes fromw1 ni fromw2 depuis site. Par contre depuis worker1 et worker2 je vois bien le meme /var/www/html (dans worker1 je vois fromw1 et fromw2 et dans worker2 aussi)
Ca fonctionne mieux en mettant l'instruction VOLUME à la fin du Dockerfile
Ah yes
salut, j'ai suivi le tutoriel a la lettre , et lorsque j'entre l'ip de mon conteneur dans l'url, j'obtiens "Ce site est inaccessible 172.19.0.2 a mis trop de temps à répondre."
Je rentre dans mon container via la commande : "docker exec -it nginx_container bash" et lorsque j'entre la commande "nginx" j'obtiens ceci :
"root@2dfb9d37d342:/# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
..."
On peut supposer que je demande de lancer un autre nginx mais que le 1er nginx utilise deja ce port, mais quand je fais la commande ps, je n'ai aucun processus nginx en cours (il y a seulement bash et ps)
j'ai aussi :
root@3685abe50e33:/# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:38491 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp6 0 0 :::80 :::* LISTEN 1/nginx: master pro
udp 0 0 127.0.0.11:53869 0.0.0.0:* -
Donc visiblement il y a bien un processus nginx sur le port 80.
Mais ça marche pas 😢
par contre quand j'ecris "docker run -tid -p 80:80 --name site serveurweb", je peux acceder a la page nginx en entrant comme url "localhost" mais ca ne fonctionne pas quand je rentre l'ip du container
Si tout mon pavé t'as gonflé tu peux supprimer mon post, je ne t'en voudrai pas ^^
sur ubuntu j'ai ajouter avant le premier apt-get :
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get update
RUN apt-get install -y apt-utils
pour éviter des messages en rouge !
Salut très bien. Si tu as remarqué la vidéo date un peu !