#!/bin/bash # Script pour générer les variables Docker pour toutes les composantes # Fonction pour charger les fichiers d'environnement dans l'ordre load_env_files() { local env_files=(".env") for env_file in "${env_files[@]}"; do if [ -f "$env_file" ]; then echo "Chargement de $env_file..." # Charger en ignorant les erreurs de syntaxe set -e source "$env_file" 2>/dev/null || true set +e else echo "Fichier $env_file non trouvé, ignoré." fi done } # Charger les variables d'environnement dans l'ordre load_env_files rm -rf .env.auto docker-compose.yml.auto echo " services: " >> docker-compose.yml.auto # Liste des variables/composantes # Fonction pour générer les variables pour une composante generate_variables() { local VARIABLE="$1" echo "# ====== INTERNAL $VARIABLE ======" echo "" echo "${VARIABLE}_DOCKER_NAME=\$${VARIABLE}" echo "${VARIABLE}_CONFS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/confs/\$${VARIABLE}" echo "${VARIABLE}_LOGS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/logs/\$${VARIABLE}" echo "${VARIABLE}_RUNS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/runs/\$${VARIABLE}" echo "${VARIABLE}_DATAS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/datas/\$${VARIABLE}" echo "${VARIABLE}_BACKUPS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/backups/\$${VARIABLE}" echo "${VARIABLE}_SCRIPTS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/scripts/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_WORKING_DIR=/home/\$${VARIABLE}" echo "" echo "${VARIABLE}_DOCKER_CONFS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/confs/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_LOGS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/logs/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_RUNS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/runs/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_DATAS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/datas/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_BACKUPS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/backups/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_SCRIPTS_DIR=\/home/debian/4NK_env/DOCKER_GLOBAL_NAME/scripts/\$${VARIABLE}" echo "${VARIABLE}_DOCKER_WORKING_DIR=/home/\$${VARIABLE}" echo "" echo "${VARIABLE}_DOCKER_WORKING_DIR_CREATE=\"id -u \$${VARIABLE} >/dev/null 2>&1 || adduser --disabled-password --gecos '' \$${VARIABLE}; chown -R \$${VARIABLE}:\$${VARIABLE} /home/root/.\$${VARIABLE} || echo 'warn: chown partiel (fichiers bind-mount Windows)'; exec \\\"\$@\\\"\"" echo "${VARIABLE}_URL_ROUTE=/\$${VARIABLE}" echo "${VARIABLE}_URL=\http://\\\$${VARIABLE}_DOCKER_NAME:\$${VARIABLE}_DOCKER_PORT" echo "${VARIABLE}_URL_EXTERNAL=\https://dev4.4nkweb.com\$${VARIABLE}_URL_ROUTE" echo "${VARIABLE}_URL_WS=\ws://\\\$${VARIABLE}_DOCKER_PORT" echo "${VARIABLE}_URL_WS_EXTERNAL=\wss://dev4.4nkweb.com\ws" echo "" echo " \$${VARIABLE}_DOCKER_NAME: image: \$${VARIABLE}_DOCKER_IMAGE container_name: \$${VARIABLE}_DOCKER_NAME working_dir: /\$${VARIABLE}_DOCKER_NAME ports: - \"0.0.0.0:\$${VARIABLE}_EXTERNAL_PORT\" - \"0.0.0.0:\$${VARIABLE}_PORT\" - \"0.0.0.0:\$${VARIABLE}_PORT2\" - \"0.0.0.0:\$${VARIABLE}_PORT3\" volumes: - \$${VARIABLE}_CONFS_DIR:\$${VARIABLE}_DOCKER_CONFS_DIR - \$${VARIABLE}_LOGS_DIR:\$${VARIABLE}_DOCKER_LOGS_DIR - \$${VARIABLE}_RUNS_DIR:\$${VARIABLE}_DOCKER_RUNS_DIR - \$${VARIABLE}_DATAS_DIR:\$${VARIABLE}_DOCKER_DATAS_DIR - \$${VARIABLE}_BACKUPS_DIR:\$${VARIABLE}_DOCKER_BACKUPS_DIR - \$${VARIABLE}_SCRIPTS_DIR:\$${VARIABLE}_DOCKER_SCRIPTS_DIR networks: btcnet: aliases: - \$${VARIABLE}_DOCKER_NAME user: root entrypoint: \> /bin/sh -c \"\$${VARIABLE}_DOCKER_WORKING_DIR_CREATE\" healthcheck: test: [\"CMD\", \"sh\", \"\$LECONFFRE-FRONT_CONFS_DIR/healthcheck_\$${VARIABLE}.sh\"] interval: 30s timeout: 10s retries: 50 restart: unless-stopped\"" >> docker-compose.yml.auto echo "" } function generate_variables_external() { local VARIABLE="$1" echo "# ====== EXTERNAL $VARIABLE ======" echo "" 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 les variables pour toutes les composants for VARIABLE in "${SERVICES[@]}"; do generate_variables "$VARIABLE" >> .env.auto done # Générer les variables pour toutes les composants externes for VARIABLE in "${SERVICES_EXTERNAL[@]}"; do generate_variables_external "$VARIABLE" >> .env.auto done echo " watchtower: image: containrrr/watchtower container_name: watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock command: --interval 30 --label-enable networks: - btcnet restart: unless-stopped networks: btcnet: name: 4nk_node_btcnet driver: bridge ipam: config: - subnet: 172.20.0.0/16 " >> docker-compose.yml.auto mv docker-compose.yml.auto projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre/projects/lecoffre//home/debian/4NK_env/DOCKER_GLOBAL_NAME_NAME/docker-compose.yml.auto -f