From a20aa81cfd9203255809e6b366bb23eacb7daeb2 Mon Sep 17 00:00:00 2001 From: Kevin L'Hereec Date: Mon, 1 Jun 2026 11:37:51 +0200 Subject: [PATCH] chore: add simulator docker-compose overlay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Integrates home-device-simulator as optional Docker services. Usage: docker compose -f docker-compose.yml -f docker-compose.simulator.yml up Services added: - simulator : backend Go TR-069 sur port 9898, partage mongodb et réseau ACS - simulator-ui: UI nginx sur port 3000, env injecté via config/simulator-ui-env.js Flux: simulator → ACS via http://app:8080/cwmp10 (réseau Docker interne) ACS → simulator Connection Request via http://simulator:9898/... Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- config/simulator-ui-env.js | 11 +++++ docker-compose.simulator.yml | 87 ++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 config/simulator-ui-env.js create mode 100644 docker-compose.simulator.yml diff --git a/config/simulator-ui-env.js b/config/simulator-ui-env.js new file mode 100644 index 0000000..6b6a3d6 --- /dev/null +++ b/config/simulator-ui-env.js @@ -0,0 +1,11 @@ +// Injecté au runtime par docker-compose (volume mount). +// Permet au navigateur de savoir où appeler le backend du simulateur. +window.__ENV__ = { + VITE_BACKEND_API_URL: "http://localhost:9898", + VITE_HOST: "Local Dev", + VITE_RELEASE_NAME: "dev", + VITE_SAMPLE_DATA: "sampledevice.json", + VITE_ACS_CHECK_ENABLED: "false", + VITE_KARMA_GUI_SSO_LOGIN_URL: "", + VITE_KARMA_GUI_URL: "" +}; diff --git a/docker-compose.simulator.yml b/docker-compose.simulator.yml new file mode 100644 index 0000000..3d0717f --- /dev/null +++ b/docker-compose.simulator.yml @@ -0,0 +1,87 @@ +# Simulateur de devices TR-069 (home-device-simulator) +# +# Usage : +# docker compose -f docker-compose.yml -f docker-compose.simulator.yml up +# +# Le simulateur partage le réseau et la MongoDB de l'ACS. +# Backend : http://localhost:9898 +# UI : http://localhost:3000 + +services: + simulator: + build: + context: ../home-device-simulator + dockerfile: Dockerfile + restart: unless-stopped + ports: + - "9898:9898" + environment: + HOST: "0.0.0.0" + PORT: "9898" + # L'ACS est accessible via son nom de service Docker + ACSUrl: "http://app:8080/cwmp10" + # URL que l'ACS utilise pour réveiller le simulateur (via le réseau Docker interne) + CONNECTION_REQUEST_URL: "http://simulator:9898/api/v1/device-simulator/http-digest" + PROXY: "false" + BSE_PROXY: "false" + AUTO_DELETE_ENABLED: "false" + INFORM_ACCEPTED_PARAMS: "HardwareVersion,SoftwareVersion,ProvisioningCode,ConnectionRequestURL,ParameterKey,ExternalIPAddress" + ADD_IP_AS_HEADER_NAME: "" + IPV4_DENY_PREFIX: "" + IPV6_PREFIXES: "" + # MongoDB partagée avec l'ACS + MONGO_URL: "mongodb://adam:adam@mongodb:27017/adam-acs?authSource=admin" + MONGO_DATABASE: "adam-acs" + MONGO_CONNECTION_TIMEOUT: "10" + MONGO_SOCKET_TIMEOUT: "30" + MONGO_MAX_CONNECTION_IDLE_TIME: "60" + MONGO_MAX_POOL_SIZE: "10" + MONGO_MIN_POOL_SIZE: "2" + DEVICE_CREATION_BATCH_SIZE: "1000000" + BATCH_SIZE_FOR_BOOTSTRAP: "50" + BATCH_WAIT_FOR_BOOTSTRAP: "0" + DEVICE_DELETION_THREADS: "10" + DEVICE_DELETION_TIME_UNIT: "hr" + DEVICE_DELETION_TIME_CONSTANT: "24" + CONF_LOG_LEVEL: "info" + CONF_LOG_ENCODING: "text" + CONF_LOGS_FILE_LOCATION: "logs/logs.txt" + CONF_JSON_LOGS_FILE_LOCATION: "logs/logs_json.txt" + LOG_CONF_FILE_MAX_SIZE: "10" + LOG_CONF_FILE_MAX_BACKUP_FILES: "-1" + LOG_CONF_FILE_AGE_OF_FILE: "-1" + CREATION_LOG_LEVEL: "info" + CREATION_LOG_ENCODING: "text" + DEVICE_CREATION_LOGS_FILE_LOCATION: "logs/device_creation.txt" + DEVICE_CREATION_JSON_LOGS_FILE_LOCATION: "logs/device_creation_json.txt" + LOG_CREATION_FILE_MAX_SIZE: "10" + LOG_CREATION_FILE_MAX_BACKUP_FILES: "-1" + LOG_CREATION_FILE_AGE_OF_FILE: "-1" + REQUESTS_LOG_LEVEL: "debug" + REQUESTS_LOG_ENCODING: "text" + DEVICE_REQUEST_LOGS_FILE_LOCATION: "logs/device_request.txt" + DEVICE_REQUEST_JSON_LOGS_FILE_LOCATION: "logs/device_request_json.txt" + LOG_REQUEST_FILE_MAX_SIZE: "10" + LOG_REQUEST_FILE_MAX_BACKUP_FILES: "-1" + LOG_REQUEST_FILE_AGE_OF_FILE: "-1" + depends_on: + app: + condition: service_healthy + volumes: + - simulator_logs:/app/logs + + simulator-ui: + build: + context: ../home-device-simulator/simulator-ui + dockerfile: Dockerfile + restart: unless-stopped + ports: + - "3000:3000" + volumes: + # env-config.js injecté au runtime pour configurer l'URL du backend côté navigateur + - ./config/simulator-ui-env.js:/usr/share/nginx/html/env-config.js:ro + depends_on: + - simulator + +volumes: + simulator_logs: