Séparation de la génération du docker-compose et empêcher la copie dans storage/ - Créé generate_docker_compose.sh pour générer uniquement docker-compose.yml.auto - Refactorisé generate_variables.sh pour générer uniquement .env.auto - Mis à jour replace_variables_and_copy.sh pour ne pas copier docker-compose.yml.auto dans storage/ - Mis à jour generate.sh pour orchestrer 7 étapes au lieu de 6 - Mis à jour la documentation README.md pour refléter les changements - docker-compose.yml.auto et .env.auto restent dans templates/dev/ pour le traitement mais ne sont plus déployés dans storage/
147 lines
4.4 KiB
Bash
Executable File
147 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
||
# Script de génération des variables d'environnement
|
||
# Génère uniquement .env.auto
|
||
|
||
set -euo pipefail
|
||
|
||
# Couleurs pour les messages
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Fonctions de couleur
|
||
print_error() { echo -e "${RED}❌ ERREUR${NC}: $1" >&2; }
|
||
print_success() { echo -e "${GREEN}✅ SUCCÈS${NC}: $1"; }
|
||
print_warning() { echo -e "${YELLOW}⚠️ ATTENTION${NC}: $1"; }
|
||
print_info() { echo -e "${BLUE}ℹ️ INFO${NC}: $1"; }
|
||
|
||
# Fonction pour charger les variables d'environnement
|
||
load_env_files() {
|
||
local env_files=(".env.secrets" ".env" ".env.post")
|
||
|
||
for env_file in "${env_files[@]}"; do
|
||
if [ -f "$env_file" ]; then
|
||
print_info "Chargement de $env_file..."
|
||
# shellcheck source=/dev/null
|
||
source "$env_file"
|
||
else
|
||
print_warning "Fichier $env_file non trouvé"
|
||
fi
|
||
done
|
||
}
|
||
|
||
# Fonction pour générer les variables pour une composante
|
||
generate_variables() {
|
||
local VARIABLE="$1"
|
||
|
||
echo "# ====== INTERNAL $VARIABLE ====="
|
||
echo "${VARIABLE}_DOCKER_NAME=${VARIABLE,,}"
|
||
echo "${VARIABLE}_DOCKER_IMAGE=${VARIABLE,,}"
|
||
echo "${VARIABLE}_DOCKER_TAG=latest"
|
||
echo "${VARIABLE}_PORT=\$${VARIABLE}_PORT"
|
||
echo "${VARIABLE}_LOGS_DIR=\$LOGS_DIR/\$${VARIABLE}_DOCKER_NAME"
|
||
echo "${VARIABLE}_CONFS_DIR=\$CONFS_DIR/\$${VARIABLE}_DOCKER_NAME"
|
||
echo "${VARIABLE}_RUNS_DIR=\$RUNS_DIR/\$${VARIABLE}_DOCKER_NAME"
|
||
echo "${VARIABLE}_DATAS_DIR=\$DATAS_DIR/\$${VARIABLE}_DOCKER_NAME"
|
||
echo "${VARIABLE}_BACKUPS_DIR=\$BACKUPS_DIR/\$${VARIABLE}_DOCKER_NAME"
|
||
echo "${VARIABLE}_DOCKER_CONFS_DIR=/\$${VARIABLE}_DOCKER_NAME/confs"
|
||
echo "${VARIABLE}_DOCKER_LOGS_DIR=/\$${VARIABLE}_DOCKER_NAME/logs"
|
||
echo "${VARIABLE}_DOCKER_RUNS_DIR=/\$${VARIABLE}_DOCKER_NAME/runs"
|
||
echo "${VARIABLE}_DOCKER_DATAS_DIR=/\$${VARIABLE}_DOCKER_NAME/datas"
|
||
echo "${VARIABLE}_DOCKER_BACKUPS_DIR=/\$${VARIABLE}_DOCKER_NAME/backups"
|
||
echo "${VARIABLE}_RESTART=unless-stopped"
|
||
echo "${VARIABLE}_ENV="
|
||
echo "${VARIABLE}_COMMAND="
|
||
echo "${VARIABLE}_DEPENDS_ON="
|
||
echo ""
|
||
}
|
||
|
||
# Fonction pour générer les variables externes
|
||
generate_variables_external() {
|
||
local VARIABLE="$1"
|
||
|
||
echo "# ====== EXTERNAL $VARIABLE ====="
|
||
echo "${VARIABLE}_HOST=\$HOST"
|
||
echo "${VARIABLE}_EXTERNAL_PORT=\$${VARIABLE}_EXTERNAL_PORT"
|
||
echo "${VARIABLE}_URL_ROUTE=/\$${VARIABLE}"
|
||
echo "${VARIABLE}_URL_EXTERNAL=https://\$${VARIABLE}_HOST:\$${VARIABLE}_EXTERNAL_PORT\$${VARIABLE}_URL_ROUTE"
|
||
echo "${VARIABLE}_URL_WS_EXTERNAL=wss://\$${VARIABLE}_HOST:\$${VARIABLE}_EXTERNAL_PORT/ws"
|
||
echo ""
|
||
}
|
||
|
||
# Générer la variable HOST si elle n'est pas définie
|
||
if [ -z "$HOST" ]; then
|
||
HOST="dev4.${DOMAIN}"
|
||
fi
|
||
|
||
# Supprimer les fichiers de sortie existants (remplacer complètement)
|
||
rm -f .env.auto
|
||
|
||
# Générer les variables de base
|
||
echo "# ====== BASE VARIABLES =====" >> .env.auto
|
||
echo "HOST=$HOST" >> .env.auto
|
||
echo "" >> .env.auto
|
||
|
||
# Liste des variables/composantes
|
||
SERVICES=(
|
||
"REDIS"
|
||
"POSTGRESQL"
|
||
"LOKI"
|
||
"PROMTAIL"
|
||
"GRAFANA"
|
||
"NGINX"
|
||
"TOR"
|
||
"_4NK_VAULT"
|
||
"BITCOIN"
|
||
"BLINDBIT_ORACLE"
|
||
"SDK_RELAY"
|
||
"SDK_STORAGE"
|
||
"IHM_CLIENT"
|
||
"_4NK_CERTIFICATOR"
|
||
"_4NK_MINER"
|
||
"LECOFFRE_FRONT"
|
||
"_4NK_WEB_STATUS"
|
||
)
|
||
|
||
# Générer les variables pour chaque service
|
||
for VARIABLE in "${SERVICES[@]}"; do
|
||
generate_variables "$VARIABLE" >> .env.auto
|
||
done
|
||
|
||
# Services externes
|
||
SERVICES_EXTERNAL=(
|
||
"REDIS"
|
||
"POSTGRESQL"
|
||
"LOKI"
|
||
"PROMTAIL"
|
||
"GRAFANA"
|
||
"NGINX"
|
||
"TOR"
|
||
"_4NK_VAULT"
|
||
"BITCOIN"
|
||
"BLINDBIT_ORACLE"
|
||
"SDK_RELAY"
|
||
"SDK_STORAGE"
|
||
"IHM_CLIENT"
|
||
"_4NK_CERTIFICATOR"
|
||
"_4NK_MINER"
|
||
"LECOFFRE_FRONT"
|
||
"_4NK_WEB_STATUS"
|
||
)
|
||
|
||
# Générer les variables externes
|
||
for VARIABLE in "${SERVICES_EXTERNAL[@]}"; do
|
||
generate_variables_external "$VARIABLE" >> .env.auto
|
||
done
|
||
|
||
# Générer les variables pour BOOTSTRAP (correction de l'incohérence BOOSTRAP/BOOTSTRAP)
|
||
echo "# ====== EXTERNAL BOOTSTRAP (correction) =====" >> .env.auto
|
||
echo "BOOTSTRAP_URL_ROUTE=/\$BOOTSTRAP" >> .env.auto
|
||
echo "BOOTSTRAP_URL_EXTERNAL=https://\$BOOTSTRAP_HOST:\$BOOTSTRAP_EXTERNAL_PORT\$BOOTSTRAP_URL_ROUTE" >> .env.auto
|
||
echo "BOOTSTRAP_URL_WS_EXTERNAL=wss://\$BOOTSTRAP_HOST:\$BOOTSTRAP_EXTERNAL_PORT/ws" >> .env.auto
|
||
echo "" >> .env.auto
|
||
|
||
echo "✅ Variables d'environnement générées dans .env.auto"
|