🗃️ Archiver un site et des images
Voici comment j'ai fait pour faire un backup complet de mon site avec Docker. Ce site était un site Bookstack qui était donc composé de Bookstack, de dépendences PHP ainsi que d'une base de donnée mariadb.
Malheureusement je ne peux pas simplement migrer le site vers une nouvelle instance car la version de Bookstack est trop ancienne pour être compatible.
D'abord je fais un backup des fichiers important sur le serveur
# Je vais dans le dossier du site
cd /var/www/BookStack
# Je génère un script sql qui va me permettre de restaurer ma base de donnée "bookstack_db"
mysqldump -u root bookstack_db > bookstack-backup-db.sql
# Ensuite je crée une archive tar qui contient tous mes fichiers importants
tar -czvf bookstack-backup-files.tar.gz .env public/uploads storage/uploads
# Enfin je vais prendre note de la version de bookstack
cat version
Ensuite je récupère ces fichiers dans un nouveau dossier sur mon ordi :
mkdir bookstack-backup
cd bookstack-backup
rsync -rv debian@snowcode.ovh:/var/www/BookStack/bookstack-backup-* .
Ensuite je vais créer un docker-compose dans ce dossier avec le contenu suivant :
version: "2"
services:
bookstack:
image: ghcr.io/linuxserver/bookstack:version-v0.31.4 # Ici je met la version de BookStack
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- APP_URL=http://localhost:8080
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USER=bookstack
- DB_PASS=secret
- DB_DATABASE=bookstackapp
volumes:
- ./bookstack_files:/config
ports:
- 8080:80
depends_on:
- bookstack_db
bookstack_db:
image: lscr.io/linuxserver/mariadb:10.6.10
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=secret
- TZ=Europe/Brussels
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=secret
volumes:
- ./bookstack_db:/config
Maintenant on peut lancer ce serveur
sudo docker-compose up
Et on va placer les fichiers dans les différents volumes créés
sudo su # Il faut être root pour faire tout ce qui suis
mv bookstack-backup-files.tar.gz bookstack_files
mv bookstack-backup-db.sql bookstack_db
cd bookstack_files
tar xvzf bookstack-backup-files.tar.gz
Enfin on va entrer dans le conteneur de la base de donnée pour y importer notre script
sudo docker exec -it bookstack_db bash -c "mysql -u bookstack -p bookstackapp < /config/bookstack-backup-db.sql"
# Le mot de passe est "secret"
Maintenant on peut accéder au site à l'addresse http://localhost:8080
Archiver les images
Maintenant si on veut aller encore plus loin on peut également archiver les images de mariadb et bookstack.
Tout d'abord on va lister les images:
sudo docker images
Maintenant on va prendre les ID de celles de bookstack et mariadb et on va les exporter dans un fichier .tar
sudo docker image save aad0c49aebf3 -o bookstack.tar
sudo docker image save 39a4293c3071 -o mariadb.tar
Et voilà !
Maintenant si on souhaite réimporter ces images :
sudo docker image import bookstack.tar ghcr.io/linuxserver/bookstack:version-v0.31.4
sudo docker image import mariadb.tar lscr.io/linuxserver/mariadb:10.6.10
Les images ont maintenant été réimportées !