Cheat Code - pifou25/docker-jeedom GitHub Wiki

Docker

ceci pour inspecter tous les containers, trouver leur nom & adresse IP respectifs:

docker ps -q | xargs -n 1 docker inspect --format '{{ .Name }} {{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' | sed 's#^/##';

cela pour inspecter tous les containers, trouver leur labels:

docker ps -q | xargs -n 1 docker inspect -f '{{ printf "%s\n" .Name }} {{ range $k, $v := .Config.Labels -}}{{ printf "\t%s = %s\n" $k $v }}{{end }}'

Et idem pour avoir la liste des variables d'environnement des containers:

docker ps -q | xargs -n 1 docker inspect -f '{{ printf "%s\n" .Name }} {{ range $k, $v := .Config.Env -}}{{ printf "\t%d = %s\n" $k $v }}{{end }}'

Et idem pour la liste des volumes (source & destination)

docker ps -a --format '{{ .ID }}' | xargs -I {} docker inspect -f '{{ .Name }}{{ printf "\n" }}{{ range .Mounts }}{{ printf "\n\t" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "\n" }}' {}

Get docker logs size:

sudo sh -c "du -ch /var/lib/docker/containers/*/*-json.log"

Utiliser un container docker mosquitto pour générer un fichier password dans mon hôte:

docker run -ti --rm -v $PWD:/tmp eclipse-mosquitto mosquitto_passwd -c /tmp/file_name user_name

Utiliser un container MariaDB (ou MySql) existant pour exécuter du code SQL: avec docker il faut utiliser le nom du conteneur (ici il sera de la forme nginx_db_1, soit [stack]_[service]_1) mais avec compose on n'utilise juste que le nom du service:

docker compose exec -ti db mysql -p

Installer les dépendances PHP - Composer dans notre répertoire courant, sans avoir installé ni PHP ni Composer:

docker run --rm -v $PWD:/app composer install

SQL

Créer une bdd et un utilisateur avec tous les droits dessus :

CREATE USER 'dbuser'@'%' IDENTIFIED BY 'mypassword';
CREATE DATABASE IF NOT EXISTS `dbname`;
GRANT ALL PRIVILEGES ON `dbname`.* TO 'dbuser'@'%';
flush privileges;

Change password : ALTER USER 'userName'@'localhost' IDENTIFIED BY 'New-Password-Here';

Shell

mysql

Executer une commande SQL (ici créer un utilisateur) avec l'option -e

mysql --host=${MYSQL_HOST} --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} -e "CREATE USER 'tst'@'localhost' IDENTIFIED BY 'tst';"

Exporter une bdd dans un fichier SQL

mysqldump --host=db --port=3306 --user=jeedom --password='jeedom' --databases jeedom  > /var/www/html/DB_backup.sql

mosquitto_passwd

Utilitaire pour générer le fichier d'authentification pour le broquer MQTT (le fichier contient le login:mot de passe crypté) https://mosquitto.org/man/mosquitto_passwd-1.html Syntaxe pour générer le fichier passtest pour l'utilisateur jeedom: l'utilitaire demandera alors d'entrer le mot de passe (2 fois pour confirmation) et génèrera le fichier passtest dans le répertoire courant.

mosquitto_passwd -c passtest jeedom

tar gz

tar = copier des fichiers dans une seule archive ( 1 fichier ); gz = compression du fichier archive. Regrouper les 2 opérations: on peut ajouter une liste de fichiers / répertoires à exclure de la sauvegarde.

tar czf my_archive.tar.gz --exclude={"logs","docker-compose","*.log","*.log.gz"} data_to_save

Opération inverse:

tar -xvf -C destination file

Pour MySQL - ou autre outil de sauvegarde - on peut enchainer les 2 commandes, mysqldump + gzip:

mysqldump -h localhost -u username -ppassword -d dbname | gzip -c > /tmp/archive.sql.gz

(attention, pour mysql, pas d'espace entre -p et la valeur du mot de passe. Simples quotes pour se protéger des caractères spéciaux.)

Opération inverse: gunzip + import du fichier SQL dans la bdd

gunzip < /tmp/archive.sql.gz | mysql -h localhost  -u username -ppassword -d dbname

Affichage d'une 'progress-bar' avec pv lors de l'export / import : après pv il faut estimer la taille finale (non zippée)

mysqldump -h hostname -u username -p'clear_password' \
   --single-transaction --quick --hex-blob --routines --triggers --no-create-db --compress database_name | pv -W -s 10g | gzip -c > /tmp/archive.prod.sql.gz

gunzip < archive.prod.sql.gz | pv -W -s 10g | mysql -h hostname  -u username -p'clear password' database_name

Tree view

recursive tree view (require perl):

ls -aR | grep ":$" | perl -pe 's/:$//;s/[^-][^\/]*\//    /g;s/^    (\S)/└── \1/;s/(^    |    (?= ))/│   /g;s/    (\S)/└── \1/'

.bashrc

Ce fichier présent dans le répertoire "home/" contient les alias de commandes personnalisées. Ajouter celle-ci, pour créer la commande logs à la place de docker logs -n 10 :

alias logs='/usr/bin/docker logs -n 10 '

GIT

Windows trick to get rid off the +x bit of binary / executable files: https://stackoverflow.com/questions/6476513/git-file-permissions-on-windows

git config core.filemode false
⚠️ **GitHub.com Fallback** ⚠️