Ceci est une ancienne révision du document !
Docker
Notes
- Dockerfile :
ADD –chown=user:group my-backup.tar.gz /var/www
: chown n'a aucun effet sur les fichiers et dossiers extrait d'un fichier compressé et c'est normal…- Dans un Dockerfile appelé depuis un fichier docker-compose.yml où des volumes nommées sont créés, la commande chown n'aura aucun effet car les volumes sont créés préalablement…
Sauvegarde et restauration
- Pour la restauration, créer un fichier
docker-compose-restore.yml
semble être une solution intéressante. À lancer avecdocker-compose -f docker-compose-restore.yml up
- Exemple de méthode fonctionnelle pour sauvegarder & restaurer : https://loomchild.net/2017/03/26/backup-restore-docker-named-volumes/
- Exemple de commande :
docker run -it --rm -v bookmarksclapasorg_data-shaarli-storage:/var/www/shaarli/data -v ${PWD}/backup/:/backup alpine sh -c "rm -rf /var/www/shaarli/data/* /var/www/shaarli/data/..?* /var/www/shaarli/data/.[!.]* ; tar -C /var/www/shaarli/data/ -xjf /backup/2019-10-29_shaarli_data_backup.tar.bz2 ; chown -R 100: /var/www/shaarli/data/"
- Utilisation d'une image Docker correspondant à l'article : https://github.com/loomchild/volume-backup
- Solutions basées sur Duplicity : https://github.com/blacklabelops/volumerize et un exemple d'utilisation avec Docker Compose
- Solution CampToCamp → Bivac : https://hub.docker.com/r/camptocamp/bivac
- Solution embarqué dans un container (cron, backup) : https://hub.docker.com/r/futurice/docker-volume-backup
- Exemple avec une image contenant Shaarli :
- Toutes les données sont stockées dans :
/usr/share/nginx/shaarli/data
- Récupérer le nom du container contenant les données avec la commande
ps
(ex.: shaarli_data_1) :docker ps
- Utiliser ensuite la commande
cp
pour copier les données :docker cp shaarli_data_1:/usr/share/nginx/shaarli/data/ ~/backup_dir
- Pour restaurer les données :
- Récupérer le nom du container (ex.: shaarli_data_1) :
docker ps
- Utiliser ensuite la commande
cp
pour restaurer les données :docker cp ~/backup_dir shaarli_data_1:/usr/share/nginx/shaarli/data/
Sauvegarde rapide de Shaarli : bookmarks.clapas.org
- Se placer dans le dossier suivant :
cd /home/admin/yilgarn/boomarks.clapas.org
- Créer un dossier backup :
mkdir backup
- Sauvegarde du dossier
/data
:docker run --rm --volumes-from bookmarks.clapas.org_shaarli -v $(pwd)/backup:/backup bradynpoulsen/archive-utils /bin/bash -c "tar -cjf /backup/$(date +"%Y-%m-%d")_shaarli_data_backup.tar.bz2 /var/www/shaarli/data ; chown 1001:1001 /backup/*.bz2"
- Vérifier sur l'hôte la présence du nouveau fichier
.tar.bz2
dans le dossier./backup/
- Commande d'accès au container :
docker exec -it bookmarks.clapas.org_shaarli /bin/sh
Sauvegarde rapide Dokuwiki : memos.clapas.org
- Se placer dans le dossier suivant :
cd /home/admin/yilgarn/memos.clapas.org
- Créer un dossier backup :
mkdir backup
- Créer successivement les sauvegardes avec les commandes :
docker run --rm --volumes-from memos.clapas.org_dokuwiki -v $(pwd)/backup:/backup debian:buster tar cvf /backup/2020-06-04_data.tar /var/www/html/data docker run --rm --volumes-from memos.clapas.org_dokuwiki -v $(pwd)/backup:/backup debian:buster tar cvf /backup/2020-06-04_conf.tar /var/www/html/conf docker run --rm --volumes-from memos.clapas.org_dokuwiki -v $(pwd)/backup:/backup debian:buster tar cvf /backup/2020-06-04_plugins.tar /var/www/html/lib/plugins docker run --rm --volumes-from memos.clapas.org_dokuwiki -v $(pwd)/backup:/backup debian:buster tar cvf /backup/2020-06-04_tpl.tar /var/www/html/lib/tpl
- Passer en root et donner les droits à admin sur les fichiers :
su ; chown admin: backup/*.tar
Sauvegarde rapide Wallabag : wallabag.clapas.org
- Se placer dans le dossier suivant :
cd /home/admin/yilgarn/wallabag.clapas.org
- Créer un dossier backup si nécessaire :
mkdir backup
- Lancer successivement les sauvegardes avec les commandes :
docker run --rm --volumes-from wallabag.clapas.org -v $(pwd)/backup:/backup bradynpoulsen/archive-utils /bin/bash -c "tar -cjf /backup/$(date +"%Y-%m-%d")_wallabag_data_backup.tar.bz2 /var/www/wallabag/data ; chown 1001:1001 /backup/*.bz2" docker run --rm --volumes-from wallabag.clapas.org -v $(pwd)/backup:/backup bradynpoulsen/archive-utils /bin/bash -c "tar -cjf /backup/$(date +"%Y-%m-%d")_wallabag_images_backup.tar.bz2 /var/www/wallabag/web/assets/images ; chown 1001:1001 /backup/*.bz2"
- Notes : l'image bradynpoulsen/archive-utils contient le binaire bzip2 non disponible dans les images Debian de base…
Sauvegarde rapide Passbolt pwd.clapas.org
- Se placer dans le dossier suivant :
cd /home/admin/yilgarn/pwd.clapas.org
- Créer un dossier backup si nécessaire :
mkdir backup
- Lancer successivement les sauvegardes avec les commandes :
docker exec pwd-clapas-database sh -c 'exec mysqldump --databases pwd -uroot -p"$MYSQL_ROOT_PASSWORD"' > "backup/$(date +"%Y-%m-%d")_db_backup.sql" docker run --rm --volumes-from pwd-clapas-passbolt -v $(pwd)/backup:/backup bradynpoulsen/archive-utils /bin/bash -c "tar -cjf /backup/$(date +"%Y-%m-%d")_gpg_backup.tar.bz2 /var/www/passbolt/config/gpg ; chown 1001:1001 /backup/*.bz2" docker run --rm --volumes-from pwd-clapas-passbolt -v $(pwd)/backup:/backup bradynpoulsen/archive-utils /bin/bash -c "tar -cjf /backup/$(date +"%Y-%m-%d")_img_backup.tar.bz2 /var/www/passbolt/webroot/img/public ; chown 1001:1001 /backup/*.bz2"
- Notes : la sauvegarde de la base de données Mariadb et des dossiers se fait avec le container actif.
Passbolt
JWT appli mobile
ATTENTION : après chaque redémarrage du docker, il est nécessaire de relancer les commandes ci-dessous :
- Se connecter au container :
docker exec -it pwd-clapas-passbolt /bin/bash
- Créer le dossier :
mkdir -m=770 /etc/passbolt/jwt
- Donner les bons droits :
chown www-data:www-data /etc/passbolt/jwt/
- Créer les clés JWT :
su -s /bin/bash -c “/usr/share/php/passbolt/bin/cake passbolt create_jwt_keys” www-data
- Vérifier que tout est ok :
bin/cake passbolt healthcheck
Commandes utiles
- Copier un fichier dans un volume nommé depuis l'hôte :
- Se placer dans le dossier contenant les fichiers à copier sur l'hôte :
cd <mon-dossier>
- Copier le fichier :
docker run --rm -v $PWD:/src -v my-volume:/dest -u user:group -w /src busybox cp /src/my-file.txt /dest/my-file.txt
- Exemple :
docker run --rm -v $PWD:/src -v amandine-cuircom_wordpress-storage:/dest -u www-data:www-data -w /src busybox cp /src/favicon.ico /dest/favicon.ico