version: '3.7' services: app: image: ghcr.io/solectrus/solectrus:latest depends_on: - db - influxdb - redis links: - db - influxdb - redis ports: - 3000: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 healthcheck: test: ['CMD-SHELL', 'nc -z 127.0.0.1 3000 || exit 1'] restart: always influxdb: image: influxdb:2.6-alpine volumes: - ${INFLUX_VOLUME_PATH}:/var/lib/influxdb2 environment: - DOCKER_INFLUXDB_INIT_MODE=setup - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUX_USERNAME} - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUX_PASSWORD} - DOCKER_INFLUXDB_INIT_ORG=${INFLUX_ORG} - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUX_BUCKET} - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUX_ADMIN_TOKEN} command: influxd run --bolt-path /var/lib/influxdb2/influxd.bolt --engine-path /var/lib/influxdb2/engine --store disk # Optional: Allow InfluxDB to be accessed from the outside. This is required to import data using senec-importer! # ports: # - 8086:8086 restart: always db: image: postgres:15-alpine environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} volumes: - ${DB_VOLUME_PATH}:/var/lib/postgresql/data restart: always redis: image: redis:7-alpine volumes: - ${REDIS_VOLUME_PATH}:/data restart: always senec-collector: image: ghcr.io/solectrus/senec-collector:latest depends_on: - influxdb links: - influxdb environment: - SENEC_HOST - SENEC_INTERVAL - SENEC_SCHEMA - INFLUX_HOST - INFLUX_SCHEMA - INFLUX_PORT - INFLUX_TOKEN=${INFLUX_TOKEN_WRITE} - INFLUX_ORG - INFLUX_BUCKET restart: always forecast-collector: image: ghcr.io/solectrus/forecast-collector:latest depends_on: - influxdb links: - influxdb environment: - INFLUX_HOST - INFLUX_TOKEN=${INFLUX_TOKEN_WRITE} - INFLUX_ORG - INFLUX_BUCKET - FORECAST_LATITUDE - FORECAST_LONGITUDE - FORECAST_DECLINATION - FORECAST_AZIMUTH - FORECAST_KWP - FORECAST_INTERVAL restart: always