Aggiunta configurazione tramite variabili d'ambiente e fix Docker Hub secrets
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 23s

- Aggiunto supporto ENV variables nel Dockerfile:
  * INVERTER_DEVICE, MQTT_SERVER, MQTT_PORT, MQTT_TOPIC
  * MQTT_DEVICENAME, MQTT_USERNAME, MQTT_PASSWORD
  * FORCE_DISCOVERY, SKIP_DISCOVERY
- Implementata funzione update_mqtt_config() in entrypoint.sh
  * Aggiorna automaticamente mqtt.json da ENV variables all'avvio
  * Backup automatico configurazione originale
- Fix workflow Docker build:
  * Login Docker Hub solo se secrets configurati
  * Push solo se secrets disponibili (evita errori CI/CD)
  * Build funziona anche senza secrets (utile per test locali)
- Aggiornato docker-compose.yml con esempio ENV variables
- Creata documentazione completa DOCKER_SETUP.md:
  * Guida configurazione variabili d'ambiente
  * Esempi docker-compose e docker run
  * Guida configurazione secrets Gitea
  * Troubleshooting e health check

Ora è possibile configurare completamente il container senza modificare file
This commit is contained in:
Pi Developer
2026-01-31 16:21:42 +01:00
parent 547537e761
commit c5645c0f2b
5 changed files with 264 additions and 4 deletions
+37
View File
@@ -14,13 +14,50 @@ TEMP_CONF="/tmp/inverter_discovered.conf"
INVERTER_DEVICE="${INVERTER_DEVICE:-/dev/ttyUSB0}"
FORCE_DISCOVERY="${FORCE_DISCOVERY:-false}"
SKIP_DISCOVERY="${SKIP_DISCOVERY:-false}"
MQTT_SERVER="${MQTT_SERVER:-192.168.1.37}"
MQTT_PORT="${MQTT_PORT:-1883}"
MQTT_TOPIC="${MQTT_TOPIC:-homeassistant}"
MQTT_DEVICENAME="${MQTT_DEVICENAME:-voltronic}"
MQTT_USERNAME="${MQTT_USERNAME:-}"
MQTT_PASSWORD="${MQTT_PASSWORD:-}"
echo "Configuration:"
echo " Device: $INVERTER_DEVICE"
echo " Force Discovery: $FORCE_DISCOVERY"
echo " Skip Discovery: $SKIP_DISCOVERY"
echo " MQTT Server: $MQTT_SERVER:$MQTT_PORT"
echo " MQTT Topic: $MQTT_TOPIC"
echo " MQTT Device: $MQTT_DEVICENAME"
echo ""
# Function to update MQTT configuration
update_mqtt_config() {
local mqtt_conf="/etc/inverter/mqtt.json"
echo "Updating MQTT configuration from environment variables..."
# Backup original
cp $mqtt_conf ${mqtt_conf}.backup
# Update MQTT settings using jq
jq --arg server "$MQTT_SERVER" \
--arg port "$MQTT_PORT" \
--arg topic "$MQTT_TOPIC" \
--arg devicename "$MQTT_DEVICENAME" \
--arg username "$MQTT_USERNAME" \
--arg password "$MQTT_PASSWORD" \
'.server = $server | .port = $port | .topic = $topic | .devicename = $devicename | .username = $username | .password = $password' \
$mqtt_conf > ${mqtt_conf}.tmp && mv ${mqtt_conf}.tmp $mqtt_conf
echo "✓ MQTT configuration updated"
echo " Server: $MQTT_SERVER:$MQTT_PORT"
echo " Topic: $MQTT_TOPIC/sensor/$MQTT_DEVICENAME"
[ ! -z "$MQTT_USERNAME" ] && echo " Auth: Enabled (username: $MQTT_USERNAME)"
echo ""
}
# Update MQTT config from ENV on startup
update_mqtt_config
# Function to update config file with discovered values
update_config_with_discovery() {
local qmod=$1