Closed loebse closed 4 months ago
Wenn SOLECTRUS mit "großer Freude" korreliert, finde ich das immer gut ;-)
Bei der Container-Gesundheit ist es so, dass es bis Version 0.14.3
einen integrierten HealthCheck gab, also fest eingebacken im Docker Image. Das habe ich aber mit Version 0.14.4
herausgenommen, weil ein HealtCheck im docker-compose.yml
besser aufgehoben ist. Wenn man dann im docker-compose.yml
keinen Eintrag für services.app.healthcheck
hat, dann ist der Container-Status nach dem Start nur up
und kann auch gar nicht unhealthy
werden.
Im Hosting Guide wird diese Einstellung als Teil der docker-compose.yml
vorgeschlagen:
healthcheck:
test: ['CMD-SHELL', 'nc -z 127.0.0.1 3000 || exit 1']
Ich habe das gerade nochmal mit Version 0.14.4
ausprobiert, es funktioniert problemlos. Und zwar mit und ohne healthcheck
in der docker-compose.yml
.
Wenn bei dir der Status unhealthy
ist, dann befindet sich vermutlich in der docker-compose
ein ungültiger healthcheck
. Was genau steht dann da bei dir?
Vielleicht übersehe ich was, aber der health check sollte korrekt in meiner docker-compose.yaml
sein:
services:
app:
image: ghcr.io/solectrus/solectrus:latest
depends_on:
db:
condition: service_healthy
influxdb:
condition: service_healthy
redis:
condition: service_healthy
links:
- db
- influxdb
- redis
ports:
- 3003:3000
environment:
- APP_HOST
- FORCE_SSL
- SECRET_KEY_BASE
- INSTALLATION_DATE
- ELECTRICITY_PRICE
- FEED_IN_TARIFF
- ADMIN_PASSWORD
- DB_HOST=db
- DB_PASSWORD=${POSTGRES_PASSWORD}
- DB_USER=postgres
- REDIS_URL=redis://redis:6379/1
- INFLUX_HOST
- INFLUX_TOKEN=${INFLUX_TOKEN_READ}
- INFLUX_ORG
- INFLUX_BUCKET
- INFLUX_MEASUREMENT_PV
- INFLUX_MEASUREMENT_FORECAST
- INFLUX_POLL_INTERVAL
- WEB_CONCURRENCY
healthcheck:
test: ['CMD-SHELL', 'nc -z 127.0.0.1 3003 || exit 1']
restart: always
logging:
options:
max-size: '10m'
max-file: '3'
Da fällt mir gerade auf, dass ich - ELECTRICITY_PRICE
und - FEED_IN_TARIFF
entfernen sollte 😉
Es liegt am Port. Es muss 3000
angegeben werden, nicht 3003
. Der von Dir festgelegte Port 3003
gilt nur für den Zugriff von außerhalb, der HealthCheck wird aber im Container ausgeführt.
Es muss also heißen:
healthcheck:
test: ['CMD-SHELL', 'nc -z 127.0.0.1 3000 || exit 1']
Und ja, ELECTRICITY_PRICE
und FEED_IN_TARIFF
können weg, die stammen noch aus grauer Vorzeit ;-)
Ohje, da sitzt das Problem mal wieder VOR dem Monitor 🤣
Danke Dir für die schnelle Hilfe! Macht natürlich Sinn, dass die Abfrage auf den internen Port 3000
geht.
Funktioniert so einwandfrei 👍
Hi @ledermann,
auch wenn ich schon länger nicht mehr aktiv war, verfolge ich doch weiterhin alle Entwicklung mit großer Freude 😉
Aktuell habe ich jedoch folgendes Problem: der Status des
solectrus-app-1
Containers steht immer auf `ùnhealthy``.In den Logs kann ich allerdings nicht wirklich einen Fehler erkennen. Ist Dir das bekannt bzw. kannst du den Grund erkennen? Funktional scheint soweit alles in Ordnung zu sein.