services: garmin-fetch-data: restart: unless-stopped image: thisisarpanghosh/garmin-fetch-data:latest container_name: garmin-fetch-data depends_on: influxdb: condition: service_healthy volumes: - ${GARMINCONNECT_TOKENS}:/home/appuser/.garminconnect # (persistant tokens storage - garminconnect-tokens folder must be owned by 1000:1000) environment: - INFLUXDB_HOST=influxdb - INFLUXDB_PORT=8086 - INFLUXDB_USERNAME=influxdb_user - INFLUXDB_PASSWORD=${INFLUXDB_PASSWORD} - INFLUXDB_DATABASE=GarminStats - UPDATE_INTERVAL_SECONDS=300 - LOG_LEVEL=INFO - GARMINCONNECT_EMAIL=${GARMINCONNECT_EMAIL} - GARMINCONNECT_BASE64_PASSWORD=${GARMINCONNECT_PASSWORD} # (must be base64 encoded) networks: - garmin-grafana-net influxdb: restart: unless-stopped container_name: influxdb hostname: influxdb image: influxdb:latest environment: - INFLUXDB_DB=GarminStats - INFLUXDB_USER=influxdb_user - INFLUXDB_USER_PASSWORD=${INFLUXDB_PASSWORD} - INFLUXDB_DATA_INDEX_VERSION=tsi1 ports: - '8086:8086' volumes: - ${PATH_TO_INFLUXDB_DATA}:/var/lib/influxdb healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8086/ping"] interval: 10s timeout: 5s retries: 5 networks: - garmin-grafana-net grafana: restart: unless-stopped container_name: grafana hostname: grafana image: grafana/grafana:latest environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} volumes: - ${PATH_TO_GRAFANA_DATA}:/var/lib/grafana ports: - '3000:3000' healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 10s timeout: 5s retries: 5 networks: - garmin-grafana-net networks: garmin-grafana-net: driver: bridge