<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://docker.dotclear.watch/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DotclearWatch / Docker - Mot-clé - cron</title>
    <link>https://docker.dotclear.watch/</link>
    <atom:link href="https://docker.dotclear.watch/feed/tag/cron/rss2" rel="self" type="application/rss+xml" />
    <description>Images Docker du moteur de blogs Dotclear</description>
    <language>fr</language>
    <pubDate>Tue, 12 May 2026 05:49:52 +0200</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Script serveur</title>
        <link>https://docker.dotclear.watch/Billet/Script-serveur</link>
        <guid isPermaLink="false">urn:md5:da2f9393bd1d3ad1b214d5127de70c1b</guid>
        <pubDate>Tue, 17 Dec 2024 19:27:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Articles</category>
                          <category>backup</category>
                  <category>bash</category>
                  <category>cron</category>
                  <category>reset</category>
                  <category>script</category>
                  <category>update</category>
                <description>&lt;p&gt;Pour les utilisateurs des images Docker unstable de Dotclear, il peut être pratique de mettre en place des scripts de mise à jour d'image, de sauvegarde et même pour les bricoleurs des script de remise à zéro.&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;https://docker.dotclear.watch/public/Billets/.bashscript_m.png&quot; alt=&quot;Script bash&quot; class=&quot;media-center&quot;&gt;
Pour la suite on part du principe qu'on a accès en SSH à notre serveur sous Linux avec un terminal sous bash, que l'utilisateur s'appelle bob et que Docker est installé et configuré.&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;1. Préambule&lt;/h5&gt;

&lt;p&gt;Les images docker de Dotclear ont la particularité de mettre tout ce qui est utile (configuration, media, etc) dans un seul répertoire facilement montable en volume, cela facilite grandement la manipulation (mise à jour, redémarrage, etc) de l'image elle-même. Dans les exemples qui suivent on va prendre en compte que les volumes doivent toujours rester intactes.&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;2. Mise à jour&lt;/h5&gt;

&lt;p&gt;On commence par créer 2 répertoires dans la home de l'utilisateur, et on édite notre composition :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkidr -p /home/bob/dcunstable/{volume,backup} &amp;amp;&amp;amp; nano /home/bob/dcunstable/docker-compose.yml&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dans laquelle on configure notre composition Dotclear :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  dcunstableapp:
    image: jcpd/docker-dotclear:dev
    container_name: dcunstableapp
    restart: unless-stopped
    volumes:
      - /home/bob/dcunstable/volume:/var/www/dotclear
    ports:
      - 80:80
    environment:
      DC_DBDRIVER: sqlite
      DC_DBNAME: \var\www\dotclear\sqlite.db
      DC_ADMINMAILFROM: contact@exemple.com&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Différents exemples de composition sont disponibles sur &lt;a href=&quot;https://github.com/JcDenis/docker-dotclear/tree/master/exemple/compose&quot; hreflang=&quot;en&quot; title=&quot;Exemples de fichier docker-compose.yml&quot;&gt;le dépôt&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
On exécute la composition pour voir si le container fonctionne bien :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose -f /home/bob/dcunstable/docker-compose.yml up -d&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Puis on édite notre premier script nommé &lt;code&gt;update.sh&lt;/code&gt; qui servira à faire la mise à jour du container :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nano /home/bob/dcunstable/update.sh&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et on y met notre script bash :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/sh -x

DP=dcunstable

DC=&amp;quot;${DP}app&amp;quot;
DF=/home/bob/$DP/docker-compose.yml
docker compose -f $DF pull $DC \
&amp;amp;&amp;amp; docker compose -f $DF stop $DC \
&amp;amp;&amp;amp; docker compose -f $DF up -d \
&amp;amp;&amp;amp; docker image prune -af&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pour explication des commandes docker compose :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Télécharge la dernière image&lt;/li&gt;
&lt;li&gt;Arrête le container&lt;/li&gt;
&lt;li&gt;Relance le container (avec la nouvelle image)&lt;/li&gt;
&lt;li&gt;Nettoie les images inutilisées&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;NLDR: J'utilise le même script pour mes différentes versions de test, et je n'ai qu'à changer le nom du dossier principal dans la variable DP.&lt;/em&gt;&lt;br&gt;
Une fois modifié, on rend le fichier exécutable et on le test.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo chmod +x /home/bob/dcunstable/update.sh &amp;amp;&amp;amp; sudo /home/bob/dcunstable/update.sh&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On devrait voir la magie opérer.&lt;br&gt;
Maintenant on va ajouter une tâche cron pour mettre à jour automatiquement la version unstable tous les jours à 6h de matin.&lt;br&gt;
On edite le cron root. (si vous n'avez pas crontab il faut l'installer.)&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo crontab -e&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et on ajoute à la fin :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 6 * * * /home/bob/dcunstable/update.sh&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et voila, notre installation de développement sera toujours à jour.&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;3. Sauvegarde&lt;/h5&gt;

&lt;p&gt;Maintenant il est vrai qu'utiliser une version dev c'est pour y mettre le bazar et donc risquer de tout planter, on va donc refaire la même manipulation pour faire un script de sauvegarde. On devine la démarche pour créer le fichier &lt;code&gt;backup.sh&lt;/code&gt;, le rendre exécutable et éventuellement l'ajouter au cron. Voila seulement le contenu de ce fichier :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/sh -x

DP=dcunstable

DF=/home/bob/$DP/docker-compose.yml
docker compose -p $DP stop \
&amp;amp;&amp;amp; rm -Rf /home/bob/$DP/backup \
&amp;amp;&amp;amp; mkdir /home/bob/$DP/backup/ \
&amp;amp;&amp;amp; cp -rf /home/bob/$DP/volume/* /home/bob/$DP/backup \
&amp;amp;&amp;amp; docker compose -p $DP start&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ici, on arrête le container, on efface la sauvegarde de la veille, on copie la nouvelle sauvegarde et on redémarre le container.&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;4. Restauration&lt;/h5&gt;

&lt;p&gt;On peut aussi faire un fichier &lt;code&gt;reset.sh&lt;/code&gt; pour revenir à la dernière sauvegarde, le contenu du fichier sera :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/sh -x

DP=dcunstable

DF=/home/bob/$DP/docker-compose.yml
DC=&amp;quot;${DP}app&amp;quot;
docker compose -f $DF pull $DC \
&amp;amp;&amp;amp; docker compose -p $DP stop \
&amp;amp;&amp;amp; rm -Rf /home/bob/$DP/volume \
&amp;amp;&amp;amp; mkdir /home/bob/$DP/volume \
&amp;amp;&amp;amp; cp -rf /home/bob/$DP/backup/* /home/bob/$DP/volume \
&amp;amp;&amp;amp; docker compose -f $DF up -d&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ici on a un exemple avec fichier &lt;code&gt;docker-compose.yml&lt;/code&gt; qui aurait deux services, un pour la base de données nommé &lt;code&gt;dcunstabledb&lt;/code&gt; et un pour l'application Dotclear nommé &lt;code&gt;dcsuntableapp&lt;/code&gt;. On voit ainsi qu'on peut à travers &lt;strong&gt;docker compose&lt;/strong&gt; travaillé sur qu'une seule partie de la composition.&lt;/p&gt;

&lt;h5&gt;5. Conclusion&lt;/h5&gt;

&lt;p&gt;Voila trois exemples d'utilisation des commandes &lt;strong&gt;docker compose&lt;/strong&gt; et de la simplicité de manipuler les containers et volumes Docker. A vous de les adapter à vos besoins, si vous désirez mettre à jour tous les services du container, sauvegarder que certains volumes, etc...&lt;br&gt;
&lt;br&gt;&lt;/p&gt;</description>
        
                  <comments>https://docker.dotclear.watch/Billet/Script-serveur#comment-form</comments>
          <wfw:comment>https://docker.dotclear.watch/Billet/Script-serveur#comment-form</wfw:comment>
          <wfw:commentRss>https://docker.dotclear.watch/feed/atom/comments/76</wfw:commentRss>
              </item>
      </channel>
</rss>
