Adopter la structure FHS /srv/docker/ et /opt/docker-scripts/

Changements majeurs :
- SCRIPTS_DIR passe de ~/scripts a /opt/docker-scripts (FHS /opt/)
- COMPOSE_DIR, VOLUME_DATA, VOLUME_MYSQL passes a /srv/docker/ (FHS /srv/)
- Ajout de GIT_REPO et GIT_BRANCH dans docker-scripts.conf
- setup.sh source la config des le debut pour centraliser tous les defauts
- Tous les fallbacks internes des scripts alignes avec la config
- docker-compose.yml de reference mis a jour
- README : nouvelles instructions d'installation et chemins

Avantages : un seul dossier par app Docker, backup/migration simplifies,
structure standard FHS, aucune modif de script necessaire par projet.
This commit is contained in:
2026-06-26 15:22:47 -04:00
parent 6f761fe8ed
commit 0fc2b8d0d6
8 changed files with 74 additions and 50 deletions
+25 -13
View File
@@ -20,6 +20,13 @@
set -euo pipefail
# ─── Charger la configuration si présente (permet de centraliser tous les défauts) ─
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if [[ -f "$SCRIPT_DIR/docker-scripts.conf" ]]; then
# shellcheck source=/dev/null
source "$SCRIPT_DIR/docker-scripts.conf"
fi
# ─── Couleurs ───────────────────────────────────────────────────────────────
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; BLUE='\033[0;34m'; NC='\033[0m'
ok() { echo -e " ${GREEN}✅${NC} $1"; }
@@ -28,10 +35,10 @@ err() { echo -e " ${RED}❌${NC} $1"; }
info() { echo -e " ${CYAN}📋${NC} $1"; }
step() { echo -e "\n${BLUE}════════════════════════════════════════════════════════${NC}"; echo -e "${BLUE}🔧 $1${NC}"; echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"; }
# ─── Configuration ──────────────────────────────────────────────────────────
GIT_REPO="${GIT_REPO:-https://git.dracodev.net/Outils/docker-scripts.git}"
SCRIPTS_DIR="${SCRIPTS_DIR:-$HOME/scripts}"
BRANCH="${BRANCH:-main}"
# ─── Configuration (fallbacks après chargement de la config) ──────────────────
GIT_REPO="${GIT_REPO:-https://git.dracodev.net/Outils/docker-generic-scripts.git}"
SCRIPTS_DIR="${SCRIPTS_DIR:-/opt/docker-scripts}"
BRANCH="${GIT_BRANCH:-main}"
DOCKER_APP_NAME="${DOCKER_APP_NAME:-gitea}"
# ─── Usage ──────────────────────────────────────────────────────────────────
@@ -47,7 +54,7 @@ Options :
Variables d'environnement :
GIT_REPO URL du dépôt Git (défaut: $GIT_REPO)
SCRIPTS_DIR Dossier d'installation (défaut: \$HOME/scripts)
SCRIPTS_DIR Dossier d'installation (défaut: /opt/docker-scripts)
BRANCH Branche Git à utiliser (défaut: main)
EOF
exit 0
@@ -177,27 +184,32 @@ make_executable() {
setup_logs() {
step "Étape 4/6 : Configuration des logs"
# Charger la config pour connaître LOG_DIR
if [[ -f "$SCRIPTS_DIR/docker-scripts.conf" ]]; then
source "$SCRIPTS_DIR/docker-scripts.conf"
fi
# LOG_DIR, BACKUP_CRON_LOG, UPDATE_CRON_LOG déjà chargés depuis docker-scripts.conf
LOG_DIR="${LOG_DIR:-/var/log}"
BACKUP_CRON_LOG="${BACKUP_CRON_LOG:-$LOG_DIR/${DOCKER_APP_NAME}-backup-cron.log}"
UPDATE_CRON_LOG="${UPDATE_CRON_LOG:-$LOG_DIR/${DOCKER_APP_NAME}-update-cron.log}"
if [[ -d "$LOG_DIR" ]] && [[ -w "$LOG_DIR" ]]; then
ok "Dossier de logs $LOG_DIR accessible"
elif [[ -d "$LOG_DIR" ]]; then
warn "Pas de droit d'écriture sur $LOG_DIR"
info "Les logs seront écrits dans $HOME/"
LOG_DIR="$HOME"
BACKUP_CRON_LOG="$HOME/${DOCKER_APP_NAME}-backup-cron.log"
UPDATE_CRON_LOG="$HOME/${DOCKER_APP_NAME}-update-cron.log"
else
if mkdir -p "$LOG_DIR" 2>/dev/null; then
ok "Dossier de logs $LOG_DIR créé"
else
warn "Impossible de créer $LOG_DIR — logs dans $HOME/"
LOG_DIR="$HOME"
BACKUP_CRON_LOG="$HOME/${DOCKER_APP_NAME}-backup-cron.log"
UPDATE_CRON_LOG="$HOME/${DOCKER_APP_NAME}-update-cron.log"
fi
fi
# Créer les fichiers de log s'ils n'existent pas
touch "$HOME/${DOCKER_APP_NAME}-backup-cron.log" "$HOME/${DOCKER_APP_NAME}-update-cron.log" 2>/dev/null || true
touch "$BACKUP_CRON_LOG" "$UPDATE_CRON_LOG" 2>/dev/null || true
return 0
}
@@ -218,7 +230,7 @@ setup_logrotate() {
need_sudo=true
fi
local log_files="$HOME/${DOCKER_APP_NAME}-backup-cron.log $HOME/${DOCKER_APP_NAME}-update-cron.log /var/log/${DOCKER_APP_NAME}-backup.log /var/log/${DOCKER_APP_NAME}-update.log"
local log_files="$BACKUP_CRON_LOG $UPDATE_CRON_LOG /var/log/${DOCKER_APP_NAME}-backup.log /var/log/${DOCKER_APP_NAME}-update.log"
cat << LOGROTATE
# Rotation des logs Docker scripts
@@ -444,8 +456,8 @@ echo ""
echo "📊 Logs :"
echo " Backup : ${LOG_DIR:-/var/log}/${DOCKER_APP_NAME}-backup.log"
echo " Update : ${LOG_DIR:-/var/log}/${DOCKER_APP_NAME}-update.log"
echo " Cron backup : $HOME/${DOCKER_APP_NAME}-backup-cron.log"
echo " Cron update : $HOME/${DOCKER_APP_NAME}-update-cron.log"
echo " Cron backup : ${BACKUP_CRON_LOG:-$HOME/${DOCKER_APP_NAME}-backup-cron.log}"
echo " Cron update : ${UPDATE_CRON_LOG:-$HOME/${DOCKER_APP_NAME}-update-cron.log}"
echo ""
echo "🕐 Tâches cron :"
echo " Backup : $(grep "$SCRIPTS_DIR/docker-backup.sh" <(crontab -l 2>/dev/null) | awk '{print $1" "$2" "$3" "$4" "$5}')"