Session du 11 avril 2024 à 20h00
Développement Web & Frameworks
Bases de données
Outils & IDE
DevOps & Environnement
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Déployer Django et dashboard Raspberry Pi
Déploiement d'un projet Django avec BDD postgres sous Docker avec l'aide de ChatGPT, projet avec Raspberry PI.
00:00:00 :Ok c'est parti. Alors je regarde un peu ce qu'il y a. Il me semble que j'ai déjà vu tout le monde, sauf peut-être Cédric.Oui, première fois que je viens.
00:00:18 :Ok. Gabriel il m'a dit qu'il y avait quelqu'un qui serait nouveau ce soir. Tu connais Gabriel peut-être ?Non.Après j'avais posé une question sur le mentorat tout à l'heure, donc c'est peut-être pour ça.
00:00:32 :Ah d'accord, ok. Et tu connais bien Python ou c'est juste la première fois pour toi le mentorat ?C'est la première fois pour moi le mentorat et je débute sur Python.
00:00:44 :Ok, super. Bienvenue parmi nous. Merci. J'avais mis le programme, j'ai essayé de faire un peu mieux que d'habitude.Je l'ai mis ce midi, je ne sais pas si vous avez eu le temps de le voir. Dites-moi dans les commentaires si ça vous va comme programme.
00:01:05 :Merci beaucoup Pierre-André, parce que c'était à ma demande en fait et je t'en remercie.Oui, je sais.Et je l'avais vu. Merci.Bon c'est bien. La prochaine fois je vais essayer de faire encore mieux. Je mettrai peut-être la veille au soir.
00:01:19 :C'est cool. J'ai pu anticiper un peu sur le sujet, donc merci beaucoup.Ok, c'est cool. Et est-ce que ça vous a plu ?Oui, oui. Moi j'ai hâte de voir du coup parce que je nage un peu dans le brouillard.
00:01:35 :Très bien. Alors avant ça, je voudrais revenir sur ce qu'on a fait la dernière fois.Alors si je m'abuse, c'était toi Simon qui avait des problèmes d'import de plaquettes et tout ça, de relatif ?
00:01:49 :Absolument.Ouais, c'était toi Simon. Du coup j'ai préparé un petit truc et tu vas me dire si ça clarifie un peu les choses.Est-ce que vous voyez l'écran ? Est-ce que vous le voyez assez bien ? Je vais zoomer.
00:02:15 :C'est bon là pour vous ?Ok, très bien. Alors déjà, Simon, la dernière fois on avait trouvé un peu une solution alternativeavec la mise en mémoire dans les environnements avec le Python dotenv.
00:02:38 :Donc ça déjà, est-ce que tu as pu l'utiliser ou est-ce que c'était assez clair pour toi ?Je n'ai pas encore utilisé mais je me le suis noté pour utiliser le moment venu.
00:02:51 :Très bien. Donc là ce que je te propose, c'est en fait, ton histoire d'import relatif, en soi,ce n'est pas une erreur liée au fait de la manière dont tu as organisé ton code.
00:03:09 :C'est plutôt que l'erreur réside dans le fait de comment tu exécutes ton script.En fait imagine, enfin je dis imagine pour Simon mais bien sûr ça vaut pour tout le monde,il n'y a pas de soucis, c'est juste que c'était Simon qui avait posé la question.
00:03:26 :Imaginons qu'on a un dossier, on a un package qui s'appelle my package ici,et dans ce package tu as deux modules. Je les ai appelés module 1 et module 2
00:03:38 :et dans chacun de ces modules tu as des scripts qui font des fonctions.J'ai appelé un fichier script parce qu'il me semblait que c'était ce que tu avais,un fichier Python dans lequel tu as des constantes.
00:03:56 :Et là-dedans tu avais un problème parce que tu voulais appeler les constantes d'un module dans un autre, etc.C'était bien ça.Oui c'est ce genre de choses-là. Appeler les fonctions de l'un dans l'autre ou les classes de l'un dans l'autre.
00:04:14 :Donc typiquement quand tu es dans le main file,si je fais une description de mon dossier, je suis dans mon package,j'ai un main file dans le package avec un fichier de constantes, des constantes globales.
00:04:51 :Ensuite dans mon module j'ai aussi un fichier de constantes mais qui sont uniquement pour le module 2et pareil un fichier de constantes qui sont uniquement valables pour le module 1.
00:05:00 :Si on veut un petit peu naviguer là-dedans, quand tu es là-dessus,ça normalement, on va voir si ça fonctionne, là tu n'as pas de soucisparce que tu vois ici, je suis bien dans mon module principal, je peux importer ce que je trouve dans global constantparce qu'en fait moi je suis là, j'importe ce qui se passe ici, donc pas de soucis, je peux importer.
00:05:21 :Là tu vois il est comme ça, mon constant global, température globale, j'ai pas de soucis.Pareil, depuis l'endroit où je suis ici, si je lance, il n'y a pas de soucis,je peux aller chercher dans le module 1, le fichier qui s'appelle module 1 constanteset je vais chercher température module 1 qui est ici, là-dedans, température module 1.
00:05:46 :Donc ça dans ce cas-là, pas de soucis.Ce qui devient un peu plus compliqué, c'est...Ouais ?Excuse-moi, j'ai pas entendu.Jusque là, tout va bien.
00:05:58 :Ok, très bien.Donc là normalement, effectivement, il n'y a pas de soucis dans ce sens-là.Ce qui devient un peu plus compliqué, c'est quand tu es à l'intérieur de ton sous-module en fait.
00:06:12 :Donc là tu vois, si je fais, je vais me déplacer là-dessus, module 1.Donc là je suis dans mon module 1, je suis dans un sous-module de mon package.
00:06:32 :Donc toi, tu vas pouvoir, tu vas vouloir faire ça par exemple.Tu vas dire, je suis dans mon module 1, mais depuis mon module 1, je veux aller importer des chosesqui sont dans une arborescence deux fois inférieure.
00:06:52 :Tu peux vouloir aussi dire, je veux aller carrément aller chercher dans mon arborescence qui est deux fois inférieure,module 2, etc.Donc là, typiquement, si je fais ça, hop, j'ai la fameuse erreur de relative import.
00:07:08 :Donc c'était bien ça qu'on avait comme problème.Et en fait, le problème, c'est tout simplement que la manière dont tu le lances,c'est que si tu le lances d'ici, en fait comme c'est du relatif,il ne comprend pas qu'il ne trouve pas de dossier par un.
00:07:24 :Si tu veux lancer, si tu veux avoir des modules, des imports relatifs comme ça dans tes fichiers,tu n'as pas d'autre choix.En tout cas, c'est hyper complexe comme truc, les imports relatifs, etc.
00:07:36 :Donc c'est normal que ça galère.C'est la manière dont tu dois appeler ton script.Donc si tu veux que ça fonctionne, il faut que tu le lances en mode module.
00:07:45 :Donc là, tu dis, depuis le dossier principal, tu dis python3-m pour dire,je veux que tu lances mon script en mode module.Donc là, tu fais my package.
00:07:55 :Donc là, après, tu descends ton arborescence.Donc tu es dans my package, module 1, inside module 1.Donc là, si tu fais ça, tu vois que tes imports relatifs, ils fonctionnentparce que Python est ton interpréteur, il comprend que tu es en train de parcourir ton arborescence.
00:08:12 :Après, forcément, si tu le lances depuis le module fizz, en fait,si tu n'as pas fait le sys.passad, etc.Il ne comprend pas qu'il y a des modules parents par-dessus.
00:08:29 :Voilà un petit peu l'organisation qu'il faut que tu aies.Si tu as des imports relatifs et que tu veux que ça fonctionne,il faut que tu lances le tout en mode module.
00:08:44 :C'est juste ça, en fait.C'est python3-m.Il ne faut pas mettre ici le .py.Tu vois, quand tu lances ton truc, il ne faut pas que tu mettes ton .py.
00:08:54 :C'est vraiment, tu le lances en mode module.Sans oublier tes init.py.Mais alors, si j'ai besoin d'une classe qui est dans module 1et que j'ai besoin de l'appeler à la fois depuis le main et depuis le module 2,comment est-ce qu'il faut que je...
00:09:14 :Qu'est-ce qu'il faut que j'écrive dans chacun pour que je puisse le lancer des deux, depuis les deux ?Ah, ben tu ne pourras pas.Malheureusement, si tu veux...
00:09:26 :Ah oui, en fait, tu as un truc de ce type-là, un truc comme ça,où tu fais un if name égale main, comme ceci,et que tu veux tester directement depuis lui.
00:09:44 :C'est ça que tu voudrais faire ?Ouais, c'est ça.En fait, c'est ça que je voudrais faire, un truc comme ça.Après, là, malheureusement, il faudra toujours que tu passes quand même par le module parent,enfin ton package parent, parce que sinon,si tu le lances directement depuis ici, il ne va pas comprendre tes imports relatifs.
00:10:08 :Tu n'as pas d'autre choix que de passer par le module parent.Après, si tu veux faire tes tests, ça reste possible,c'est juste qu'il faudra que tu lances ton print ou même si tu rentres en interactif,si tu rentres en interactif, ça devrait fonctionner,tu vas pouvoir utiliser tes variables ensuite, après.
00:10:26 :D'accord.Mais en fait, c'est peut-être aussi que je construis mal les relations entre mes modules.Il faut que je fasse autrement, en fait.Voilà, c'est ça.
00:10:41 :Après, tu vois que ça, ce truc-là, quand tu es comme ça, ça marche bien.En fait, quand tu descends ton arborescence,quand tu pars d'en haut et que tu descends dans l'arborescence,ça, ça fonctionne bien sans souci.
00:10:54 :Par contre, effectivement, dès que tu veux revenir dans une arborescence plus haut,forcément, tu vas avoir des problèmes.Ok.Bon, il faut penser les choses autrement.
00:11:04 :J'ai compris que l'arbre, il est bon,mais c'est comment je fais parler les branches entre elles qui n'est pas bon.Voilà, c'est ça.Et c'est surtout comment tu exécutes ton script.
00:11:14 :C'est pour ça, moi, je te conseille de lancer comme ça en mode module.Et de toute façon, tu verras, si tu vas voir sur Stack Overflow,quand tu commences à faire tes tests,c'est que c'est comme ça que ça marche.
00:11:25 :Et de toute façon, tu verras, si tu vas voir sur Stack Overflow,quand tu commences à poser ce genre de questions,parce qu'il y a des fils de discussion à 3000 réponses,enfin, 3000 vues, etc.
00:11:36 :C'est des trucs...Même Guido Von Rossum, celui qui a développé Python, il a...Je ne l'avais pas montré.Il parle de ce genre de problème.
00:11:46 :C'est un truc...C'est un truc très complexe à manipuler.Et c'est normal de galérer là-dessus.Ok.Moi, en fait, j'ai surtout tendance à appuyer sur le bouton,enfin, sur la flèche en haut à droite, là, pour lancer les trucs.
00:12:04 :Mais ça, c'est bien quand vraiment tu as un script indépendant, etc.Moi, j'ai souvent eu aussi des ennuis à cause de ça.C'est pratique, mais forcément, en fait, quand tu fais ça,en fait, quand tu regardes ici ce truc-là,tu vois qu'il lance...
00:12:20 :Tu vois ça, là ?Il te lance, en fait, le fichier...Comme si...Si tu as une arborescence qui descend, ça va.Mais si tu as une arborescence qui remonte,il ne va pas trouver parce qu'il lance depuis le fichier lui-même.
00:12:36 :Oui, ok.Bon, voilà.Oui, oui, je t'en prie.Je ne suis pas sûr que ça va répondre au maximum à ta question, mais...Si, là, c'est clair.
00:12:54 :Je vois ce qui est possible et ce qu'il faut éviter, quoi.Oui.Je sais que ce n'est pas forcément que mon architecture a été foireuse,c'est qu'il faut que les objets se parlent autrement.
00:13:06 :Voilà, c'est ça.Ton arborescence est sûrement correcte,mais c'est la manière dont tu le lances à laquelle il faut faire attention.Hum...Alors...Ce que l'on peut faire...
00:13:23 :On avait dit...Comment je peux prendre le problème ?On va se le faire de base.On va repartir de zéro comme ça.Pour ceux qui débutent aussi, ça peut être intéressant.
00:13:41 :Alors, on va se créer un...On va voir, parce qu'il y a eu quelques questions aussi des étudiantsde comment on fait pour coder avec...
00:13:50 :Enfin, pas coder, mais pour discuter avec ChatGPTsans qu'il fasse trop de la merde.Donc, moi, ce que je vous propose, c'est que je vous montresi je ne savais pas faire ce que je vais vous montrer,comment je ferais avec ChatGPT.
00:14:04 :Et bon, après, ChatGPT, c'est bien,mais forcément, si vous êtes...Ce n'est pas du tout péjoratif,mais si vous êtes 100% noob sur un sujetet que vous vous dites, je vais faire avec ChatGPT,forcément, ça va être très compliqué,parce qu'il va vous proposer des choses,vous n'allez pas savoir débuguer, etc.
00:14:23 :Donc, moi, mon conseil, c'est qu'avant de se lancer avec ChatGPT,il ne faut pas se dire, ChatGPT va me faire mon projetsi je ne connais rien du tout.
00:14:33 :C'est bien, des fois, pour découvrir des choses,mais il faut un minimum de maîtrise du sujetavant de se dire, je vais pouvoir le faire avec ChatGPT.
00:14:40 :Donc, nous, on va aller ici,on va se créer un petit projet Django.Donc, on va dire mkdir Django project docstring,cd Django machin,et on va s'ouvrir le code là-dedans.
00:15:08 :Donc, là, on va se créer, comme d'habitude,l'environnement virtuel.Alors, pour ceux qui débutent,là, un environnement virtuel, en fait,ça me permet, comme son nom l'indique,de créer un environnement qui sera propre uniquement à mon projet.
00:15:33 :Et je ne vais pas aller perturber l'installationde mon Python ailleurs.Donc, là, on l'active.Voilà, et on va installer Django.Cédric, je pense à toi, parce que tu as ditque tu débutais sur Python.
00:16:02 :Vraiment, ne sois pas effrayé de ce qu'on faitsi tu débutes sur Python.Les sessions de mentorat, ce n'est pas en mode,voilà, vous êtes tous à ce niveau-là,et si vous ne savez pas faire ça,c'est que vous êtes nuls.
00:16:16 :Ce n'est pas du tout ça.Les mentorats, c'est, on fait des choses ensemble,on découvre des choses ensemble,et plus tard, quand vous y serez,vous dites, ah oui, ça, j'ai déjà vu,et maintenant, je comprends.
00:16:29 :Ou c'est aussi pour vous montrertout ce qu'on peut faire avec Pythonpour essayer de vous intéresser,pour vous montrer à quel point c'est puissant.
00:16:37 :Donc, vraiment, ne te fais pas de soucis,et puis, même les autres,si vous êtes, c'est comme d'hab,je répète assez, mais...Donc, là, Django Admin, Start Project,et puis, on va dire...
00:16:56 :Oui, oui, Axel, je ne t'ai pas mentionné,mais c'est parce que je t'ai déjà vudepuis deux, trois sessions, c'est pour ça que...Oui, oui, c'était pour rassurer...
00:17:06 :Oui, vas-y.Non, non, c'est ça,ce que je voulais dire, en fait,c'était pour rassurer les personnesqui seraient nouvelles aussi.Moi, je n'ai pas de honte à direque je suis complètement débutant.
00:17:16 :Oui, oui, de toute façon,on est tous débutants un jour, donc...C'est clair, merci.Et puis, tu vois, Cédric, le Axel,comme il dit, il est débutant,ça fait déjà trois, quatre sessions qu'il vient,et j'imagine que s'il revient,c'est que ça l'intéresse aussi,donc, voilà.
00:17:36 :Alors, on a dit Django Admin,Start Project,qu'est-ce qu'on va mettre ?Ouais, The Crow, débutant...Start Project, qu'est-ce qu'on va dire ?On va dire Doxtring, Julen...
00:17:54 :Ce n'est pas très important.OK, donc là, on a notre projetavec les settings, etc.Voilà, je vais voir si...Déjà, vous allez voir que ça fonctionne bien.
00:18:21 :Doxtring, Julen...Voilà, donc là, on a créé une petite application.Attendez, je vais enlever la pleine page.Là, vous voyez, on a déjà...Donc, on a un petit serveur webqui tourne sur le port 8000,et on a l'application Django.
00:18:42 :Je ne vais pas aller plus loindans le développement de l'application Django,c'est juste pour vous montrer ce qu'on fait avec.Donc ça, imaginez qu'on développe notre application Djangoet on veut le déployer sur un serveur.
00:18:56 :Un serveur que vous avez de dispo,je ne sais pas, sur AWS, sur Linode,sur ce que vous voulez,ou même sur un Raspberry Pi,après on fera un petit exercice avec ça.
00:19:06 :L'idéal, le mieux pour déployer un projet maintenant,en 2024, c'est d'utiliser Docker.Parce qu'en fait, Docker,c'est un moyen de containeriser son application,l'environnement, etc.
00:19:21 :Et donc si moi, je développe une application sur mon Macet que je crée une image Docker,elle marchera tout aussi bien sur Linux,sur Windows, sur un serveur, etc.
00:19:31 :Donc ça, c'est un des avantages.Et un autre avantage aussi,c'est que pour maintenir une application,c'est beaucoup plus simple avec Docker.Parce qu'en fait, vous pouvez dire tout simplement,voilà, mon Docker, je le relance.
00:19:45 :En fait, le Docker, c'est un peu comme si c'était une mini-machineavec tout son environnement.Et il suffit de l'allumer, la machine.Si la machine, elle s'allume, l'application, elle s'allume, etc.
00:19:55 :Vous n'avez rien à faire dedans.Donc si votre serveur, il crash ou j'en sais rien,en fait, dès que vous allez relancer votre serveur,votre machine, elle va s'allumer en même tempset puis elle va relancer la commandeet puis l'application, elle va se relancer.
00:20:08 :Donc là, on est là, on a notre application.Et maintenant, ce qu'on aimerait bien faire,c'est justement créer le Docker et pouvoir le déployer.Donc là, on va faire une pierre deux coups.
00:20:17 :On va dire, on va s'aider de,comme les gens qui l'avaient demandé,on va s'aider de ChatGPT.Donc là, on va lui dire,donc vas-y, ChatGPT, créez-moi une image.
00:20:37 :Voilà.En fait, on va faire comme si on ne savait pas le faireet puis on va avancer petit à petit.Donc là, on va lui dire,on va aller là-dessus, sur ChatGPT.
00:20:55 :Et donc là, on va lui dire,en fait, comme ça, ça vous permet de voir un peule niveau de détail qu'il faut.Voilà, toutes mes discussions que j'ai avec lui.
00:21:07 :Donc là, on va dire, j'ai un projet Djangoque j'aimerais déployer avec Docker.Créez-moi le fichier Dockerfile qui va bien.Donc là, en fait, ce qu'il faut faire,c'est un peu décrire son truc.
00:21:33 :Il ne faut pas juste dire,créez-moi un fichier Dockerfilequi va bien pour un projet Django.Enfin, c'est exactement la même chose que je viens de dire,mais il ne faut pas juste dire,créez-moi un fichier Dockerfile pour...
00:21:45 :Vous voyez, en fait,là, les deux informations importantes,c'est j'ai un projet Django et je veux un Dockerfile.Comme ça, il sait que c'est un projet Djangoet que je veux un Dockerfile.
00:21:53 :Donc là, je lui dis, vas-y, fais-le moi.Donc il va me dire, OK, je le fais.Donc là, il me dit carrément,il me dit le fichier Dockerfile que je dois considérer.
00:22:07 :Il y a un truc qui ne va pas bien,c'est que là, s'il fait ça,il va juste me créer un Docker classique,comme si j'étais en local.
00:22:17 :Mais moi, je veux une base de données Postgre.Donc il faut qu'au final,j'ai un Dockerfile juste pour l'applicationet après, je veux le déployer avec Postgre.
00:22:29 :Donc je vais lui préciser.En fait, après, moi je veux déployeravec une database Postgre.Donc il faut que le Dockerfilesoit uniquement pour l'app Django.
00:22:55 :Ensuite, la commande de lancement,je la mettrai dans un Docker Compose.Vous voyez un petit peu comment on avanceet c'est pour ça que je vous dis,si vous ne connaissez pas du tout,et c'est pareil, la CMD se feradepuis le Docker Compose YML.
00:23:39 :Donc là voilà, on a un peu ce qu'on voulait,donc je vais l'écrire ici.Donc pour Docker, ce qu'il faut,c'est qu'il faut créer un Dockerfile.
00:23:52 :Et là, vous copiez,parce qu'on lui a demandé de le faire.Question Cédric ?Je voyais qu'il mettait Python 3.9,ça ne va pas poser de problème ?
00:24:02 :Tu es en 3.12 de ce que j'ai vu ?Si, c'est une bonne question.Là, il nous met 3.9 de base,on peut mettre directement 3.12 ici.
00:24:13 :Mais c'est parce que typiquement,c'est le genre de remarquequ'il est bien d'avoir,c'est qu'il propose quelque chose,mais après vous faites ce que vous voulez,vous pouvez changer.
00:24:25 :Donc un fichier Docker,on part toujours d'une image qui existe.Yannis, je vais expliquer après Docker Composece que c'est dans la suite du truc,tu vas mieux comprendre.
00:24:39 :Donc là, en fait, ce fichier Docker,c'est juste un peu un schéma de constructionpour l'image Docker qu'on va créer.Donc là, on lui dit from Python 3.12,
00:24:50 :donc ça veut dire que lui,il va directement aller chercherune image qui contient déjà Python,parce qu'on n'a pas envie d'allerjuste de se prendre un Ubuntuet puis d'aller installer Python.
00:25:02 :Donc là, il va tirer du Ubuntuavec Python déjà installé dessus.Après ça, workdir app,c'est juste pour créer un dossier appdans l'image Dockerpour aller foutre tout ce qu'il faut dedans.
00:25:19 :Après, copy requirements.txt,ça c'est parce que chat.gpt,il pense qu'on a déjà misle requirements.txt,donc il faut qu'on le crée.Et après, il va dire,installe-moi tout ce qu'il faut,donc notamment, il va installer Django directement.
00:25:32 :Après, copy . .ça veut dire que tout ce que tu vas trouver là-dedans,dans docstring-students,tu le copies dans le dossier app.Voilà, donc là, en fait,nous, on va plutôt mettre docs renommé.
00:25:54 :Voilà, je n'ai pas envie de tout copier.Donc, je vais juste mettre le dossier,voilà, là-dedans,et expose 8000.Là, c'est pareil,je vais le mettre dans le docker-compose.
00:26:10 :Voilà, donc là,normalement, il devrait pouvoir construire l'image.Je vérifie qu'on a bien tout.Ouais, question, Jean-Phil ?Ton fichier Dockerfile,il a quoi comme terminaison ?
00:26:24 :Exactement, il n'y en a pas.TXT, requirement de TXT.En fait, là, c'est parce que j'utilise VS Code,mais pareil, si vous l'utilisez sur PyCharm,il faut juste l'appeler comme ça.
00:26:37 :Par contre, c'est une convention,il s'appelle Dockerfile.D'accord.Et en fait, Dockerfile,tu vas voir quand on va faire le build,donc quand on va construire,il va, en gros,on va faire docker build . .
00:26:55 :Et en fait, . .ça veut dire que tu build tout ce que tu trouvesdans le dossier courant de là où il y a le Dockerfile.
00:27:03 :Voilà.Et donc maintenant, on a la construction.En gros, c'est un peu comme si on avait juste le manuel de construction.Maintenant, il faut le construire.
00:27:11 :Donc là, pareil, on retourne chez TchadGPT.Donc, on est poli.OK, merci.On ne sait jamais ce qui se passe.Vous connaissez Terminator.OK, merci.
00:27:21 :Et donc, maintenant, on va lui direJ'ai un nouveau . .On va lui dire, OK, merci.Maintenant, comment je construis cette image ?Pour construire l'image,ben voilà, docker build, machin.
00:27:43 :Donc là, on va lui dire,on va copier cette commande,on va la mettre là-dessus.Donc là, en fait, je vais créer l'image.Docker image.
00:27:53 :J'ai ouvert ici, en même temps, Docker desktoppour vous montrer ce qui se passe.Donc là, pour l'instant, je n'ai pas d'image.Il n'y a pas d'image.
00:28:00 :Donc là, on va la construire.On va l'appeler mon app Django.OK, ça me va.En fait, docker build, ça veut direconstruis-moi l'image Dockeravec ce schéma de construction.
00:28:12 :Et le "-t", c'est pour tag.C'est-à-dire, c'est pour lui donner un nom à l'image.Et le "-t", c'est parce que c'est le Dockerfile qui est ici.
00:28:23 :OK, donc on y va.On build.Build, ça veut dire construire.Build Dockerfile, qu'est-ce qu'il veut ?Ah oui, je suis...Je n'étais pas au bon endroit.
00:28:38 :Donc là, il construit l'image.Qu'est-ce qu'il n'aime pas ?Tu n'as pas créé le fichier requirements que tu disais ?Ouais, en fait, je l'ai créé, mais je l'ai créé dans le dossier juste...
00:28:49 :Je ne l'ai pas créé dans le bon dossier.CD, text string, il est là.On va aller le move.Move requirements.Voilà.Donc là, il est là.
00:29:06 :On y retourne.Merci pour la recherche.On n'aurait pas pu mettre le Dockerfile dans le dossier du projet directement ?Si, si, tu pouvais.On pouvait...
00:29:19 :Pourquoi je n'ai pas fait ça ?Si, on pouvait, mais c'est parce que moi, j'aime bien...J'aime bien ne pas trop mélanger...J'aime bien ne pas trop mélanger les trucs.
00:29:38 :Mais, tu vois, histoire que je n'ai pas un Dockerfile en plein milieu de mon projet Django,qui n'a pas grand-chose à voir, en fait.OK, donc là, on build.
00:29:50 :Et donc là, vous voyez déjà qu'il se passe pas mal de choses.Il est en train de créer une image Docker.Et il va tout installer.
00:30:00 :Donc là, vous allez voir après.Vous voyez que là, il m'a fait le RunPip, le machin.OK.En fait, là, il a vu une vulnérabilité, c'est dur à dire,parce que je pense qu'il a vu ma Secret Key là-dedans, dans le setting.
00:30:19 :OK.Donc là, si je retourne voir là-dessus, vous voyez que j'ai une image.OK.OK.Et maintenant, ce qu'on voudrait faire, c'est...On va aller demander à ChatGPT.
00:30:36 :OK.Donc maintenant...OK.Maintenant, j'ai mon image.Comment je construis mon container ?Voilà.Maintenant que vous avez votre image,il nous propose comment on peut construire le container.
00:31:01 :Donc voilà, il nous dit machin, Copy Code.OK.Je vais m'exécuter.Donc en fait, maintenant, si je fais par exemple Docker image ls,là, vous voyez que j'ai bien une image qui existe.
00:31:15 :Par contre, si je fais Docker container ls, j'ai zéro container.Donc en fait, c'est quoi la différence entre une image et un container ?Pour donner un mauvais jeu de mots, une image,on pourrait dire que l'image, ce serait...
00:31:37 :En fait, l'image, ce serait comme une classe, une classe Python.Une classe Python.Et le container, ce serait une instance de cette classe.OK.En fait, l'image, vous voyez, ou ce serait même...
00:32:03 :Enfin, je ne sais pas.L'image n'est peut-être pas bonne.L'image, ce serait comme un CD de jeu vidéo.Et le container, ce serait...En fait, le CD, vous ne faites rien avec.
00:32:19 :Le CD, vous le mettez dans votre lecteur de disques,à l'ancienne, dans le lecteur de disques,et vous avez le jeu qui apparaît.Donc en fait, l'image, elle sert à créer le jeu, mais il n'y a rien.
00:32:31 :Le jeu, c'est juste un produit de l'image.Et donc là, j'ai copié la commande qu'il nous a donnée.Donc là, ce qu'on dit, c'est que...
00:32:42 :OK, maintenant, tu fais Docker run.Tu vas dire, il va lancer l'image.Il va lui donner un nom.Donc là, mon AppDjango container.P pour 88000.
00:32:52 :En fait, ça, ça veut dire quoi ?Ça veut dire que...En fait, comme je vais créer un container...C'est peut-être un peu petit pour vous, quand vous faites des commandes.
00:33:02 :Voilà.Ici, en fait, je crée un container.Un container, comme je vous ai dit, c'est comme si c'était une mini-machine.En fait, c'est comme si j'avais une mini-machine sur ma machine hot.
00:33:19 :Là, ma machine hot, c'est un Mac.C'est mon Mac.Ça pourrait être le serveur, etc.Si vous créez juste votre machine au sein de votre machine hot,il ne va pas y avoir de communication entre votre machine hot et le container.
00:33:34 :Parce que, justement, l'intérêt d'un container,c'est que ce soit un environnement clos et fermé.Donc, en fait, ici, quand vous dites P88000,ça veut dire que vous créez un pont entre le port 8000 de la machineet le port 8000 de votre machine hot.
00:33:50 :Vous n'êtes pas obligé de mettre les mêmes.Vous pouvez très bien dire...En fait, ici, je mets sur le port 8003 de ma machine.Ça veut dire que vous, vous savez que l'application dans le container,elle va tourner sur le port 8000.
00:34:06 :Mais vous, vous voulez exposer ça sur votre port 8003 de votre machine.OK ?Bon, là, je vais laisser 8000, 8000.Et D, c'est pour dire Detach.
00:34:16 :Detach, ça veut dire que le container, je veux qu'il tourne en background.Parce que si vous ne mettez pas le D, vous allez avoir les logs, etc.
00:34:24 :en continu sur votre machine.Et mon app Django, c'est quoi ? C'est l'image.Donc, si je lance ça, vous voyez qu'il m'a donné un nom de container.
00:34:33 :Et maintenant, si je fais docker container ls,ça veut dire que là, j'ai un problème.Excusez-moi.Ça veut dire que là, j'ai un problème.Il n'a pas lancé.
00:34:51 :Donc, je vais aller voir ce qui se passe ici.Quand je vais voir les containers.Alors, pourquoi il a ça ?Ah ! Parce qu'en fait, je n'ai aucune commande là-dedans.
00:35:06 :Donc, en fait, c'était ce qu'il nous disait tout à l'heure dans l'image.Où est-ce que je vais faire ?Il n'y a aucune commande qui se lance, c'est normal.
00:35:27 :Donc, ce qu'on va faire.En fait, à aucun moment, je lui ai dit, fais quelque chose.Là, vous voyez que j'ai créé mon fichier docker.
00:35:36 :Et tout à l'heure, je lui ai dit, je ne veux pas ça, je ne veux pas ça.Mais là, pour l'exemple, pour l'image, en fait, il faut que je lui dise.
00:35:43 :Donc, c'est à cet endroit.Ici, commande.En fait, on veut qu'au moment du démarrage, il faut qu'il lance quelque chose.Parce que s'il ne fait rien, en fait, il crée juste une machine qui ne fait rien.
00:35:55 :Donc, il faut bien lancer quand même la commande.Donc, on va le faire ici.Et on va tout reconstruire.Parce qu'en fait, au début, ça, je voulais vous le mettre dans le docker compose.
00:36:08 :Mais là, on va juste rester sur ce que je vois le temps qui passe.Et je voulais vous montrer autre chose.C'est pour ça qu'on change un peu de plan.
00:36:15 :Donc, il va falloir que j'efface l'image.Je regarde les messages.Ouais, vous voyez, Aratorian, il avait déjà vu le problème.Ok, donc le conteneur, il faut que je le supprime.
00:36:30 :Voilà, image, delete.Ok, pareil.Donc là, on va recréer notre image.Donc là, cette fois-ci, qu'est-ce qu'il me dit ?Non, je m'en fous de ça.
00:36:46 :Voilà.Et on va relancer le conteneur.Et j'espère que cette fois-ci, ça fonctionne.Voilà, donc là, mon conteneur, il a l'air d'être activé.Et ce qui est pas mal avec le Docker Desktop de macOS,vous pouvez faire ça aussi avec Portainer ou Dockage,vous pouvez aller naviguer dans votre image.
00:37:10 :Donc là, si je clique dessus et que je fais Exec,en fait, il me lance un batch.Et donc là, vous voyez que je suis dans mon conteneur.
00:37:18 :Et dans mon conteneur, en fait, vous voyez que j'ai juste...Est-ce que c'est assez gros pour vous ?Ouais, donc là, je suis vraiment dans une machine Linux,mais uniquement à l'intérieur de mon conteneur.
00:37:28 :Donc si je fais...Je peux aller me déplacer dedans.Bon, après, c'est pas hyper friendly pour y aller, mais...J'ai bien tous les fichiers que j'ai copiés depuis mon image.
00:37:41 :Et si je clique ici, là-dessus,eh bien, j'ai bien mon truc qui tourne,mais c'est différent de tout à l'heure.Là, ça ne tourne pas sur ma machine.
00:37:52 :Vous voyez, je n'ai rien qui tourne sur ma machine.Ça tourne à l'intérieur du Docker,et j'ai un pont grâce au port 8000entre le conteneur et puis ma machine haute.
00:38:07 :Et après, ce qu'on pourrait faire,si vous voulez, on fait ça la prochaine fois,parce que là, ça fait peut-être beaucoup d'infos d'un coup,si jamais vous voulez aller regarder de votre côté le Docker en attendant.
00:38:23 :Là, pour l'instant, vous voyez qu'on a fait du local.On ne s'est pas trop embêté avec la base de données.En production, on ne fait pas ça.
00:38:32 :Pourquoi pour Docker Desktop, Oratoria ?Ou pour Portainer ?Non, je n'ai pas de version pro.Pour Portainer, j'utilise la version pro, si tu connais,mais sinon, non, pour Docker Desktop,c'est une version classique community.
00:39:01 :Voilà, et je crois même que depuis VS Code,vous pouvez, attendez, je vais...Depuis VS Code, vous pouvez dire,individual container, attach shell,et donc là, vous voyez, j'ai un shell directement dans VS Code.
00:39:23 :Je trouve que c'est pas mal de pouvoir faire ça.Et là, vous avez l'autocomplétion, etc.C'est beaucoup plus intéressant.Vous pouvez faire cat, setting, vous pouvez afficher des trucs.
00:39:34 :Donc ça, vraiment, c'est des choses qui sont dans le conteneur.Ce qu'on fera la prochaine fois,c'est qu'au lieu de lancer...Ah, pardon, j'avais pas vu le début.
00:39:48 :C'est totalement gratuit, Docker.Ouais, d'accord, OK, pardon, Oratoria, j'avais pas compris le truc.Non, Docker, c'est gratuit.Docker Desktop, c'est gratuit.Tu l'as sur Windows, Linux, je suis pas sûr.
00:40:06 :Si, je pense sur Ubuntu et sur Mac OS.Donc, ce qu'on fera la prochaine fois, c'est qu'on utilisera Docker Compose.Docker Compose, en fait, ça permet d'orchestrer plusieurs conteneurs.
00:40:17 :Parce que là, on a juste un conteneur local avec une base de données SQLite dedans.C'est pas le meilleur truc pour la production.Pour la production, il faut une base de données type MySQL ou Postgre.
00:40:28 :Et en fait, le Docker Compose, ce qu'il fait,c'est qu'il vous aide à créer plusieurs machines, plusieurs conteneurs.Donc, il faut imaginer que sur la machine hot, vous avez deux Dockers qui sont bien distincts.
00:40:40 :Un avec l'application Django et vous en auriez un autre avec la base de données Postgre.Et le Docker Compose, lui, il vous permet de lancer les deux conteneurs d'un coupet de les faire communiquer entre eux.
00:40:56 :Ça, c'est important parce qu'en fait, Docker Compose, par défaut,il met tous les services que vous décrivez dans le Docker Compose sur un même réseau.
00:41:04 :Et donc, comme ça, vous pouvez les faire communiquer l'un avec l'autre.Donc, si vous voulez, la prochaine fois, on fera ce qu'on vient de faire là,mais avec une base de données Postgre avec un Docker Compose.
00:41:14 :Et en attendant, là, sur la fin de la session, je vous montre comment on utilise Docker Composesur une application qui a déjà été développée sur un Raspberry Pi.
00:41:24 :Pourquoi sur un Raspberry Pi ? Parce que je trouve que le Raspberry Pi,ça fait longtemps que ça existe, mais je trouve ça extraordinaire comme technologie.
00:41:35 :C'est juste une carte d'ordinateur.Et typiquement, vous pouvez faire tourner.Donc là, je vais vous montrer.Moi, je fais tourner ce service-là sur mon Raspberry Pi, qui est tout le temps allumé.
00:41:48 :En fait, ça, c'est quoi ? C'est juste ma home page quand je suis en local,sous forme de dashboard.Là, vous pouvez imaginer que vous faites du home hosting,c'est-à-dire que toutes vos applications, si vous faites du home lab,c'est-à-dire que vous hébergez vous-même votre site Internet,vous avez des services que vous hébergez chez vous, etc.,
00:42:20 :vous commencez à avoir plein de services qui tournent un petit peu partoutet c'est un peu compliqué à s'y retrouver.Donc ici, typiquement, vous ne pouvez qu'optimiser un dashboardavec un lien vers tous vos services, etc.
00:42:38 :Donc c'est juste un exemple.Et là, vous voyez, j'ai une information sur le CPU du Raspberry Pi,sur sa mémoire vive qui est en cours et sur son espace disponible.
00:42:45 :J'ai même une barre de recherche ici avec Google.Ici, là, par exemple, c'est toutes les instances Linode que j'ai.Je peux aller directement dessus, sur mes instances Linode.
00:42:58 :Je peux aller sur mon portainer.Mon portainer, j'ai mis un Cloudflare access dessuspour pas que les gens puissent aller sur mon serveuret mettre en place des containers comme ils le souhaitent.
00:43:14 :J'ai ici, sur un autre...Là, en fait, Linode, c'est un peu comme AWSqui met à disposition des machines virtuelles, etc.Contabo, c'est un autre dispositif de machine.
00:43:35 :J'ai plusieurs services qui tournent sur Contabo,j'ai plusieurs services qui tournent sur Linodeet vous pouvez même ajouter des bookmarks ici.Donc là, tout ce qui est docstring, comup, c'est une plateforme de freelance.
00:43:46 :Vous pouvez mettre votre GitHub, vous pouvez mettre du YouTube,ce que vous voulez.Voilà, donc, pour ceux qui ne connaissent pas le Raspberry Pi,je vais juste remettre...
00:43:59 :Vous connaissez tous Raspberry Pi ou pas ?Il y en a qui ne connaissent pas ?Je vais remettre la caméra.Dans ce cas, je montre pour ceux qui ne connaissent pas.
00:44:16 :En fait, un Raspberry Pi, c'est ça.Je ne sais pas si vous voyez.Vous voyez, c'est une petite carte qui fait la taille de ma mainet c'est un micro-ordinateur.
00:44:26 :Un micro-ordinateur parce qu'il y a uniquement les composants essentielsqui font tourner un ordinateur.Vous ne voyez pas là ?Là, vous voyez ou pas ?
00:44:40 :Est-ce que vous voyez bien ?OK.Donc là, vous voyez, c'est une carte électronique avec tout ce qu'il faut.Donc là, je vais enlever le truc de la caméra.
00:44:58 :OK.Donc là, oui.En fait, c'est une carte qui se présente comme ça.Donc là, il y a juste l'alimentation ici.Le partage d'écran qu'on voit à la caméra en gros.
00:45:19 :Attends, parce que là, vous ne pouvez pas voir là juste sur mon...Parce qu'en partage d'écran, si je mets un partage d'écran là-dessus,ça va faire un truc infini comme ça.
00:45:31 :Il faudrait que tu coupes le partage d'écran.Ah, pardon, pardon, pardon.J'avais pas compris.Là, c'est bon.Là, c'est bon, vous voyez un peu mieux.
00:45:41 :Donc voilà.Ça, c'est un Raspberry Pi.Donc là, vous voyez, j'ai juste une alimentation qui est en USB.C'est du 5 volts.Ici, il y a une carte SD qui contient juste...
00:45:55 :C'est un peu la mémoire.Et c'est là que vous mettez l'OS.Donc là, l'OS, en fait, c'est une version de Ubuntu.Et voilà.Attendez, je vérifie les trucs.
00:46:11 :Ouais.Voilà.Donc, il y a tout ça.Ici, là, par exemple, en fait, c'est le...Je pense que là, c'est le CPU.Je ne sais pas si vous voyez en vert.
00:46:23 :Moi, j'ai mis un radiateur dessus pour dissiper le CPU.Moi, j'ai mis un radiateur dessus pour dissiper la chaleurparce que j'héberge pas mal de services dessus.
00:46:33 :Et puis voilà, vous avez ici des broches qu'on appelle des broches IEO.C'est pour brancher des capteurs dessus.Par exemple, vous pouvez brancher ce que vous voulez comme capteuret faire de l'acquisition.
00:46:45 :Et après, directement l'utiliser.Enfin voilà, vous avez plein de connectiques.Mais c'est un petit truc...Enfin, ça fait longtemps que je l'ai, celui-là.Vous pouvez brancher des services dessus.
00:46:57 :Vous pouvez brancher un RJ45 ou une clé Wi-Fi.Et vous pouvez le brancher sur Internet.Voilà, donc je vais me remettre sur le partage d'écran.
00:47:11 :Je vais enlever ma tronche.Ce n'est plus la peine.Voilà, donc là, typiquement, ce petit service-là,il tourne sur le petit Raspberry Pi, là.Donc ça, en fait, c'est l'adresse IP du Raspberry Pi.
00:47:24 :12.12.68.1.21 sur le port 3000 du Raspberry Pi.Voilà.Moi, je me connecte sur le Raspberry Pi avec du SSH.SSH, c'est quoi ?C'est un protocole de communication sécurisé entre la machine...
00:47:47 :Donc là, je suis sur mon Mac.Et si je veux accéder à mon Raspberry Pi,je fais la commande SSH.Voilà.Donc là, je vais me connecter automatiquementparce qu'en fait, j'ai mis en place une clé SSHentre mon Mac et mon Raspberry Pi.
00:48:03 :Une clé SSH RSA.C'est un algorithme de cryptage.Vous n'allez pas...Mais sinon, vous pouvez vous connecter par mot de passe aussi.Voilà.Donc là, je suis directement dans le Raspberry Pi.
00:48:17 :Et donc là, si je fais cd apps,vous allez voir que c'est des homepages.Voilà.Donc si je fais nano docker compose,en fait, forcément, c'est...
00:48:34 :Il n'y a pas d'interface.Je peux vous montrer.On peut avoir une interface graphique grâce à VNC,VNC Viewer.Est-ce que le VNC est démarré ?
00:48:47 :Je ne pense pas.Si.Là, vous voyez, je suis sur le Raspberry Pi en mode graphique.Donc voilà à quoi ça peut ressembler.C'est rudimentaire parce que c'est une petite machine.
00:49:00 :Mais voilà.Donc là, je suis à l'intérieur du Raspberry Pi.C'est un Ubuntu très classique,mais je peux faire des choses directement depuis ça.Ça, en fait, j'ai mis en place une connexion VNC.
00:49:13 :C'est un émulateur qui va émuler l'interface graphiquede la machine sur laquelle on accède.Voilà.Mais ce n'est pas le but ici.Là, moi, j'accède depuis l'invite de commandecomme une invite de commande Ubuntu classique.
00:49:30 :Donc là, le petit service que j'ai mis en ligneet auquel j'accède depuis mon port 3000,c'est grâce à ce fichier-là, docker compose.Donc là, docker compose, vous voyez,c'est juste un petit fichier .yml
00:49:47 :et j'ai juste déployé ça.En fait, vous les décrivez dans le docker compose les services.Donc là, le service, c'est home page.Home page, c'est le nom de l'application que je vous ai montré.
00:49:58 :Et là, vous voyez images.Nous, tout à l'heure, quand on a créé une image nous-mêmesde notre projet Django.Ici, c'est une image.Ce n'est pas moi qui ai développé l'image.
00:50:09 :C'est une image qui a été développée par un développeurou une association.Et donc là, je vais directement chercher l'image sur le site.En fait, ça c'est un nom d'image.
00:50:22 :Il va chercher dans le registre directement de Docker.Voilà, donc vous voyez aussi l'intérêt des images.C'est que vous pouvez aller chercher des imagesqui ont déjà été construites par d'autres développeurs.
00:50:37 :Et là aussi, toute la puissance de Docker,c'est que vous n'avez pas besoin de tout configurer vous-même.Ça a déjà été fait.Là, c'est le nom qu'on va donner à notre container.
00:50:45 :Le port 3000, comme je vous ai dit tout à l'heure,le container tourne sur le port 3000.Et moi, je vais exposer le port 3000.
00:50:53 :Je fais un pont entre le port 3000 de mon Raspberry Piet le port 3000 du container.Ici, volume, on ne va pas rentrer dans le détail ici,mais c'est juste pour pouvoir échanger de la dataentre le container et la machine hot.
00:51:07 :Et ensuite ici, ça c'est un truc important,restart always, ça veut dire qu'à chaque foisque je vais relancer mon Raspberry Pi,mais bon, moi typiquement, je ne l'éteins jamais,parce que ça consomme très peu d'énergie,il va se relancer.
00:51:20 :Ou dès qu'il va planter, il va se relancer automatiquement,grâce à cette petite commande.Et voilà, ce n'est pas plus compliqué que ça.Donc si par exemple, je vais dans config,donc là, je suis en train de naviguer dans mon Raspberry Pi.
00:51:36 :Si je fais nano service yml,vous voyez ici, il me dit qu'il faut que je sois en mode routepour aller modifier des choses.Donc si je fais sudo nano service,on va aller rajouter un service ici,juste pour que vous voyez.
00:51:57 :Qu'est-ce qu'on pourrait rajouter comme service ?On va dire chat gpt.Donc ce n'est pas là-dessus,ça va plutôt être dans les bookmarks.Sudo nano bookmarks.
00:52:18 :Donc là, vous voyez, c'est les différents bookmarksque j'ai définis.Nous, on va dire, on va se mettre chat gpt.Donc là, on va dire abréviation,on va juste dire gpt, ce n'est pas compliqué,et href pour dire où est-ce qu'il doit aller.
00:52:50 :Donc là, je crée juste un bookmark,c'est comme un onglet favorique vous mettriez sur Chrome ou ce que vous voulez.Donc là, on va juste aller chercher l'url de chat gpt.
00:53:03 :Je la copie ici, on ne va pas tout mettre,on va juste mettre gpt.Et donc là, vous voyez que pour l'instant,mon app, elle est comme ça.
00:53:14 :Donc j'ai mes instances ici,et ici, j'ai ça comme bookmark.Donc on va plutôt le mettre dans développeur, je pense.Je vais le faire comme ça.
00:53:35 :Tout ça, on va supprimer, je n'ai pas besoin.Et donc là, normalement, vous verrezque dans développeur, j'aurai un nouveau bookmark.Et ce qui est bien, c'est qu'il se met à jour automatiquement,c'est-à-dire qu'il va rafraîchir à chaque fois les configs.
00:53:57 :Donc là, vous allez voir, j'ai un nouveau bookmarket je peux aller voir ici.Là, vous allez me dire, ce n'est pas si impressionnant,franchement, mais par exemple,moi, je trouve que c'est beaucoup plus sympa d'aller configurer,vraiment, on peut faire de la configuration un peu très fine.
00:54:17 :Là, par exemple, l'image.Vous voyez, l'image qu'il y a derrière, elle est comme ça.On pourrait se dire sudo nano settings.Là, vous voyez, l'image ici, c'est celle-là.
00:54:31 :Mais si j'en veux une autre, je peux aller la changer, unsplash.com.Je vais aller chercher une autre image.On va aller dans... c'est quoi ?
00:54:49 :Pourquoi il me sort ça ?Unsplash.Par exemple, ça, est-ce qu'il y a un lien ?En écran.Si lui, on veut.Est-ce qu'on peut choper l'URL quelque part ?
00:55:22 :Partager.Copier le lien.Et donc là, je vais aller copier le lien.Bon, c'est un peu fastidieux d'aller modifier quelque chose avec nano.C'est un éditeur de texte en mode terminal.
00:55:37 :Donc, c'est pour ça que ce n'est pas hyper simple.Et donc là, vous voyez que si je vais maintenant sur...Je retourne sur mon dashboard.
00:55:47 :Il va mettre, normalement, l'image à jour qui est derrière.Bon, là, a priori, il ne l'a pas trouvé.Il doit y avoir un problème avec le lien que j'ai mis.
00:56:01 :Pourquoi ça, ça ne marche pas ?Je vais aller le changer.Ah ouais, je pense que ce n'est pas tout à fait comme ça qu'il faudrait le mettre.
00:56:23 :Mais bon, vous avez compris un peu l'idée du truc.Voilà.Et ce qui est pas mal aussi, c'est que vous pouvez mettre en place des widgets.
00:56:35 :En fait, là...Tiens, il m'a gardé l'ancienne.Ouais, non.Vous voyez qu'il fait de la merde avec l'image.Mais là, ici, par exemple, Portainer, c'est un gestionnaire de...
00:56:46 :C'est un gestionnaire de containers.Donc, on pourrait, avec un widget, mettre le statut des différents containers.Mais bon, c'était juste un exemple d'application que vous pouvez faire tourner sur un Raspberry Piauquel vous pouvez accéder.
00:57:01 :Vous pouvez se dire, je ne sais pas, si vous avez un petit site web ou un truc,vous pouvez l'héberger sur votre Raspberry Pi.Après, le truc, c'est qu'il faut quand même exposer le port de votre...
00:57:11 :Là, par exemple, c'est le 3000.Il faudrait que j'expose le port de ma Freebox 3000,pour qu'il soit accessible depuis Internet.Mais bon, vous pouvez faire ça, il n'y a pas de souci.
00:57:24 :Ou sinon, je ne sais pas si vous vous souvenez, je vous ai montré la dernière fois Ngrok.Non, je vous ai montré ou pas ça ?
00:57:32 :Si, je vous ai montré la dernière fois pour exposer...Ouais.Bah, vous pouvez, voilà, typiquement, ça serait un exemple.Vous hébergez le tout sur votre Raspberry Piet vous exposez votre port 3000 avec Ngrok.
00:57:44 :Comme ça, publiquement, les gens peuvent accéder à votre site websur votre Raspberry Pi qui est allumé H24 même la nuit.Donc, ça pourrait être un exemple de ce qu'on peut faire avec ça.
00:57:56 :Bah, voilà, c'est un peu...Je ne sais pas si...Ah ouais, j'espère que ça vous a plu.On a fait peut-être des choses qui sont un petit peu...
00:58:07 :pas avancées, mais des choses que vous n'avez pas vues sur la plateforme.On a fait du Docker, etc.Je ne sais pas si ça vous a plu.
00:58:18 :On a fait des choses qui sont un petit peu...pas avancées mais des choses que vous n'avez pas vues sur la plateforme.Voilà.Franchement, faites des tests.
00:58:30 :Essayez des trucs.Et puis, ce que je voulais dire aussi,c'est que sur mon navigateur Safari,j'ai mis en page d'accueil mon URL.Ici, il y a l'URL de ma petite application.
00:58:43 :Comme ça, j'arrive tout le temps là-dessus.Comment je l'appelle, le Raspberry Pi ?Qu'est-ce que tu veux dire par là ?Allô ?Ouais ?
00:58:57 :Non, c'est Raspberry Pi.Comme tu as dit, j'ai mis un RPG sur le chat.Je ne sais pas.Ah oui, c'est Raspberry Pi.Ok, ok. Raspberry Pi.
00:59:14 :Je sais qu'à un moment, il y a eu une rupture de stock des Raspberry Pi.Il me semble que maintenant, tu peux en retrouver.Celui que je vous ai montré, c'est un vieux, je crois.
00:59:27 :C'est le Raspberry Pi 3, il me semble.Ou peut-être 2B.Je crois qu'ils en sont à la version 4 ou 5.Je trouve que Raspberry Pi, c'est très très bien.
00:59:40 :C'est un très bon outil pour faire ce que je vous ai montré.C'est très formateur.C'est comme si vous aviez un petit serveur à la maisonqui tourne tout le temps.
00:59:52 :Vous pouvez vous entraîner à faire du SSH.Parce qu'en fait, ce qu'on fait là,se connecter à un SSH, c'est exactement ce qu'on faitquand on se connecte à un serveur sur AWS ou autre.
01:00:02 :Ah, version 6 déjà.Ok.En fonction des versions, ils sont de plus en plus puissants.Franchement, il y a des Raspberry Pi qui sont aussi puissantsque des PC d'il y a 3 ou 4 ans.
01:00:17 :Après, ce n'est pas fait pour faire la même chose,mais il y en a qui s'en servent pour faire de la bureautique.Voilà pour ce soir.
01:00:33 :Est-ce que ça vous a intéresséou est-ce que c'était trop obscur ?Non, c'était vraiment passionnant.Je te remercie beaucoup.Par contre, je voulais savoir,est-ce que tu pourrais mettre les ressources que tu as citéesconcernant le Docker ?
01:00:50 :Oui, bien sûr.Merci pour ton retour, Axel.Les ressources, genre le nom de l'application, par exemple,que j'ai utilisé ?Oui, voilà.Tout ce dont tu as parlé, inclure Raspberry Pi,tout ça, c'est...
01:01:03 :Oui, d'accord.Ça marche.Je ne sais pas ce que tu utilises,parce que ça peut être très utile.Je mettrai un petit résumé sur Discord, je pense.
01:01:14 :Tu vas sur Discord ou pas ?Oui, oui.Je mettrai sur le Channel Mentora.Merci.Il y en a qui ont un Raspberry Pi dans le chatou qui font des choses avec ?
01:01:30 :Quelle version vous avez ?Attends, il y en a plusieurs.Trois, quatre et cinq.Oui, c'est vrai que c'est bien aussi pour les enfantspour découvrir à moindre coût vraiment l'informatique.
01:01:51 :Après, ce qui est bien, c'est que, vous voyez,c'est un peu comme une 4L, en fait, la 4L.C'est-à-dire qu'il n'y a pas de 4L,c'est super parce que c'est brut de décoffrage.
01:02:01 :Il n'y a juste ce qu'il faut, il n'y a pas d'électronique.Là, il y a juste ce qu'il faut.Bien sûr, il y a de l'électronique,mais on comprend bien comment ça fonctionne.
01:02:11 :Bon, ben, voilà.Allô ?Oui.Si, c'est ce qu'il faut.Pour faire une web app,Oui, pardon, Sylvain ?Oui, j'avais juste une petite...Je voulais savoir sur la certification, là, Tosa.
01:02:32 :Oui.Est-ce qu'il y a une période pour le faireou tu peux le faire à tout moment ?Ben, en fait, l'accompagnement, c'est par période.
01:02:45 :Là, tu es inscrit dans le programme qui est démarré ou...Non, je ne suis pas inscrit au programme.J'ai beaucoup de choses à faire.C'est pour ça que je ne me suis pas inscrit, en fait.
01:02:55 :Je pense que là, pour l'instant,enfin, je ne sais pas...C'est Thibault qui fait ça,donc moi, je ne suis pas trop impliqué là-dedans.Mais de ce que je comprends,c'est que là, en fait, il a lancé un programme avec...
01:03:11 :Je crois qu'il y a 20 personnes dans le programme.Donc, je ne sais pas.Il a lancé un programme avec...Je crois qu'il y a 20 personnes dedanspour l'accompagnement.
01:03:23 :Après, oui, normalement,tu peux passer ça un peu quand tu veux,mais je vois avec Thibault plutôt pour ça.OK, OK, c'est bon.Oui, après, pour...
01:03:39 :Comme il dit, le Raspberry Pi,ce n'est pas non plus un serveur de compétition,mais c'est clair que si...Et puis, ce qui est important aussi de noter,je ne sais pas si c'est le cas pour les versions 5 et 6,c'est que l'architecture du CPU,elle est en ARM.
01:03:57 :En tout cas, pour le mien,elle n'est pas en AMD.Et ça, c'est un truc...C'est des architectures de processeursqui sont différentes.Les architectures ARMque vous retrouvez dans tout ce qui est électronique embarqué,c'est de l'ARM.
01:04:14 :Et tout ce qui est bureautique PC classique,c'est plutôt de l'architecture AMD.Et les puces M1 et M2sont aussi en architecture ARM.Donc voilà, il y a parfois des petits problèmesde compatibilité d'image avec Docker, etc.
01:04:30 :Mais voilà, c'est un truc à noter.Il me semble que sur les nouveaux Raspberry Pi,c'est de l'architecture AMD.C'est à vérifier, mais......Voilà.
01:04:50 :Bon, sur ce, je pense qu'on peut s'arrêter là.Je pense à la semaine prochainepour de nouvelles aventures.Je pense qu'on peut continuer sur Docker la semaine prochaineavec peut-être l'application...
01:05:09 :Ouais, peut-être.On peut faire ça.Ce qu'on a fait là...Pas de soucis, Simon.Bonnes vacances.On peut faire ça.En fait, l'idée, c'est de faire un peu de la continuité.
01:05:26 :Là, on a fait du Docker un peu classique.Ce qu'on peut faire la prochaine fois,comme je l'avais dit,c'est utiliser carrément le Docker Composepour continuer notre projet Django,mais le déployer avec une base de données Postgre.
01:05:38 :Et on pourra la déployer sur un serveur,et on pourra aussi...Je réfléchis, mais est-ce qu'on pourraitsoit le déployer sur le Raspberry Piet l'exposer au monde avec ngrok,ou sinon on peut le déployer sur un serveuravec un reverse proxy manager Nginxqui permet de centraliser toutes les requêtes HTTP
Aucune occurrence trouvée pour « ».