January 8Jan 8 Community Expert Les dockers et leurs installation en ligne :Depuis le début avec unraid, ça m'a semblé très dangereux avec leurs trucs "en ligne" qui, d'un seul coups ne sont plus disponibles, on se retrouve à ne plus pouvoir ce que l'on faisait précédement.Puisqu'il a fallu découvrir unraid et ses subtilités, les dockers qui sont assez simplifier pour unraid, mon temp n'a pas été employer à se pencher sur la possibiliter d'installer un docker sans être "en ligne".Problème :Je réinstalle ma machine avec un docker simple : Apache-php avec php v5.5.9 ( Repository : chvb/docker-apache-php) mais il n'existe plus !Je découvre un nouveau mais avec php v8, sauf que mes scripts et différents outils qu'il m'est impossible de refabriquer ne fonctionnent plus avec la version 8...Donc comment installer ce docker qui fonctionnait bien ?Et comment récuperer tout ce qu'il faut pour faire une installation locale ? Comem avec un CD ou DVD à l'époque ?Merci par avance.
January 8Jan 8 Salut.Il y a 2 aspects à ta question et je vais tâcher de répondre aux 2.Pour php 5.5.9 je ne t'apprends rien en te disant que ce n'est plus maintenu depuis 2016 je crois alors pour trouver des images docker opérationnelles sur cette version il faut aller sur de vieilles distributions.Je pense que tu sais que il serait mieux d'adapter ton code php5 en php8 mais soit.Dans ta situation il faudrait savoir tous les modules php dont tu aurais besoin pour te refaire une image sur mesure. Edited January 8Jan 8 by waazaa
January 8Jan 8 Je te donne une marche à suivre mais faudra que tu regardes cet aspect extensions php si il t'en manque.Dans un dossier de ton unraid de travail tu vas créer un fichier nommé Dockerfile avec ce contenu:FROM ubuntu:14.04 ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris ENV SERVERNAME=localhost.local ENV SERVERADMIN=admin@localhost # Configuration du timezone RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Installation Apache et PHP 5.5.9 RUN apt-get update && apt-get install -y \ apache2 \ php5 \ php5-cli \ php5-mysql \ php5-gd \ php5-curl \ php5-ldap \ php5-mcrypt \ php5-intl \ libapache2-mod-php5 \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Activation des modules Apache RUN a2enmod php5 rewrite remoteip WORKDIR /var/www/html EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]Ensuite en console UnRAID tu te place dans ce dossier et vas lancer cette commande (attention à bien mettre le point de fin):docker build -t apache-php5.5.9 .Une fois le travail fait tu te retrouves avec une image docker contenant apache2 et php5.5.9 avec quelques modules (mais pas tous peut-être) dans le registre docker interne à ton UnRAID.Tu peux l'utiliser dans ton template à la place de chvb/docker-apache-php tu mets donc: apache-php5.5.9 Edited January 8Jan 8 by waazaa
January 8Jan 8 Ca m'emmène à répondre au second aspect de ta question qui est de pouvoir stocker soi même les images importantes que l'on utilise.Alors oui des dépôts se ferment pour différentes raisons: sécurité, obsolescence, inactivité, dmca...Il est donc utile de stocker soi même les images que l'on trouve indispensable, un peu comme si tu conservais les exécutables d'installation d'applications ou de pilotes.Pour faire cela avec des images docker tu as à mon sens 2 façons de faire:soit tu exportes l'image en archive et tu stockes l'archivedocker save registre/image:tag | gzip > mon-image.tar.gzsoit tu fais tourner localement ton propre registreLa seconde option est la plus efficace et pour cela il te faut faire tourner un container de registre pour docker comme par exemple registry.Exemple de template à mettre en tant que my-registre-local.xml dans /boot/config/plugins/dockerMan/templates-user :<?xml version="1.0"?> <Container version="2"> <Name>registre-local</Name> <Repository>registry:3</Repository> <Registry>registry:3</Registry> <Network>bridge</Network> <MyIP/> <Shell>sh</Shell> <Privileged>false</Privileged> <Support/> <Project/> <Overview>Pour créer un htpasswd contenant nouveau credentials: docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword Et ajouter une ligne avec la réponse de cette commande dans: /mnt/user/registre-local/auth/htpasswd Pour login docker login registre.example.com </Overview> <Category/> <WebUI>https://registre.example.com</WebUI> <TemplateURL/> <Icon>https://www.webhi.com/images/world-wide-web.png</Icon> <ExtraParams/> <PostArgs/> <CPUset/> <DateInstalled>1761944556</DateInstalled> <DonateText/> <DonateLink/> <Requires/> <Config Name="/var/lib/registry" Target="/var/lib/registry" Default="" Mode="rw" Description="" Type="Path" Display="always" Required="false" Mask="false">/mnt/user/registre-local/</Config> <Config Name="/auth" Target="/auth" Default="" Mode="rw" Description="" Type="Path" Display="always" Required="false" Mask="false">/mnt/user/registre-local/auth/</Config> <Config Name="REGISTRY_AUTH:" Target="REGISTRY_AUTH" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">htpasswd</Config> <Config Name="REGISTRY_AUTH_HTPASSWD_REALM" Target="REGISTRY_AUTH_HTPASSWD_REALM" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">Registry Realm</Config> <Config Name="REGISTRY_AUTH_HTPASSWD_PATH" Target="REGISTRY_AUTH_HTPASSWD_PATH" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">/auth/htpasswd</Config> <Config Name="PORT" Target="5000" Default="5000" Mode="tcp" Description="" Type="Port" Display="always" Required="false" Mask="false">5000</Config> <TailscaleStateDir/> </Container>Il faut plusieurs choses pour cela:créer un SHARE registre-local pour stocker tous les layers que tu enverrasque tu pointes un sous domaine dessus pour avoir du https et donc certificats SSLDans le template tu remarqueras que j'utilise la protection htpasswd pour accéder au registre. Du coup avant de pouvoir pull/push vers lui il te faut t'identifier.Pour faire cela c'est assez simple il suffit de se loguer:docker login registre.example.comEnsuite une fois qu'il tourne tu peux retagger les images importantes et pousser vers ton registre privé:docker tag une/image registre.example.com/imagedocker push registre.example.com/imageEt quand tu as besoin de t'en servir tu prends:registre.example.com/imagePersonnellement j'ai créé une image docker qui fait cela pour moi en indiquant juste les images que je veux cloner il prend ce qui sort pour ces images et les stock sur mon registre privé.Edit:je viens de publier mon image pour cloner les dépôts vers son registre perso si jamais tu vas jusque là.https://hub.docker.com/r/waazaafr/docker-image-cloner Edited January 10Jan 10 by waazaa
January 10Jan 10 Author Community Expert Ah merci grandement pour tout ça ! C'est vraiment TRES intéressant tout ce que tu nous explique !Je vais relire tout en détail et mettre à profit ces précieuses infos !A suivre ;)
January 10Jan 10 Hésites pas à me solliciter si tu veux de l'aide dans l'application de ce dont j'ai parlé ici.
January 11Jan 11 Author Community Expert Encore merci pour ton aide.Concernant m'a volonté de garder php 5.5.9 c'est à cause du "programme" qui est bien fait et dont je ne sais pas du tout le mettre à jour.C'est un copain qui a modifié un programme en php et il n'a pas le temps de se remettre dessus pour le mettre à jour pour php 8 et pour ma part, je ne sais pas faire.C'est un outil sur une page web toute simple pour uploader des fichiers.Ca sert à ceux qui ne savent pas se servir des outils de upload de fichiers (photos, document word excel de base) pour que je les aide à publier ou envoyer des documents.Donc il n'y pas vulnérabilité gigantesque.Voilà pour la première partie.J'ai donc testé ta procédure avec ceci. J'ai donc créé un dossier de test et crée le fichier Dokerfile :# cd /mnt/user/Essai-Docker/# vi /mnt/user/Essai-Docker/DockerfileCopié ton texte dans le fichier et lancé la porcédure :# docker build -t apache-php5.5.9 .[+] Building 124.8s (9/9) FINISHEDOK, visiblement suivant le log affiché, tout est téléchargé dans un fichier de 70Mo en gros,# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEapache-php5.5.9 latest 7c84153844e7 40 minutes ago 271MBJ'archive l'image avec :# docker save apache-php5.5.9 | gzip > apache-php5.5.9.tar.gzJ'ai regardé ta seconde partie, mais je ne comprends pas tout.J'essaye de me documenter mais je trouve le système des dockers assez flou car entre les différentes plateformes ca m'a l'air encore différents.Et unraid est encore spécifique.Dans unraid "Docker Containers", on voit bien le docker téléchargé :(orphan image) stopped Image ID: 7c84153844e7 apache-php5.5.9:latestPar contre, comment l'installer du coups ? Tout du moins pour l'utiliser via l'outil docker unraid ?Et dans le cas d'un docker sauvé sous forme "mon-image.tar.gz"En passant, j'ai trouvé comment installer le fichier sauvé dans "docker containers" de unraid :docker load < apache-php5.5.9.tar.gzEn gros, il y a donc plusieurs phases :-Télécharger le docker : OK, c'est compris, j'ai réussi à le stocker chez moi.-Installer le docker depuis le fichier stocké chez moi : reste à comprendreMerci par avance. Edited January 11Jan 11 by PicPoc
January 11Jan 11 En fait tu n'as pas à save l'image une fois qu'elle est faite.A la fin de la commande docker build tu as obtenu:REPOSITORY TAG IMAGE ID CREATED SIZEapache-php5.5.9 latest 7c84153844e7 40 minutes ago 271MBTu peux t'arrêter là pour ton besoin initial.Il te suffit ensuite d'aller dans le template du container que tu veux utiliser pour ton application php et mettre en "repository" : apache-php5.5.9:latestL'autre partie de ma réponse concernait tes besoins de sauvegarder les images mais on voit ca aprés si tu veux.
January 11Jan 11 Author Community Expert OK.Effectivement j'ai créer un fichier XML de base pour installer le docker dans unraid via leur outil "Docker Containers" avec le webui.Tout est ok. PAr contre j'ai plusieurs modules à utiliser :a2enmod proxy proxy_http proxy_html headers xml2enc proxy_wstunnelJe les ais donc ajouté à la ligne dans le fichier Dockerfile comme ceci :# Activation des modules ApacheRUN a2enmod proxy proxy_http proxy_html headers xml2enc proxy_wstunnel php5 rewrite remoteipMais est-ce suffisant ?le proxy ne fonctionne pas bien...
January 11Jan 11 Essayes de voir en ajoutant des paquets supplémentaire donc en modifiant la partie installation des paquets;# Installation Apache, PHP 5.5.9 et dépendances proxyRUN apt-get update && apt-get install -y \ apache2 \ php5 \ php5-cli \ php5-mysql \ php5-gd \ php5-curl \ php5-ldap \ php5-mcrypt \ php5-intl \ libapache2-mod-php5 \ libapache2-mod-proxy-html \ libxml2-dev \ && apt-get clean && rm -rf /var/lib/apt/lists/*Puis tu buikd de nouveau, sur la page DOCKER de UnRAID si tu veux qu'il prenne la dernière version il te faut aller activer la vue avancée en haut à droite et a partir de ce moment pour chaque container de la page tu trouves un lien "Force update" à utiliser donc.
January 11Jan 11 Mais me semble que tu vas devoir aussi modifier le virrtualhostTon application php est en plusieurs fichiers ?tu as pas moyen de la montrer pour voir si l'upgrader pour php8 serait compliqué ou pas ? Edited January 11Jan 11 by waazaa
January 12Jan 12 Author Community Expert Je te remercie.Après plusieurs essais, le proxu et proxy reverse ne fonctionne toujours pas et je ne comprends pas trop pouquoi.Tout fonctionne avec Apache-PHP d'origine mais pas avec la version que tu m'a fait génerer.Dans le pire des cas je peux créer 3 docker (car 3 outils) pour éviter d'utiliser le proxy, mais ensuite, je vais devoir tout relier avec NGINX.Il faut que j'étudie nginx et je pars de zéro... lolPour ta proposition pour voir mon outil, je demande à mon copain, qui l'a fait. Enfin qui l'a repris de je ne sais où puis modifié...Je reviens vers toi dès que j'ai du neuf.Merci encore.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.