services: db: image: postgres:16.2-alpine restart: unless-stopped shm_size: 512mb environment: POSTGRES_PASSWORD: psqlpassword POSTGRES_DB: p1-data volumes: - postgres-storage:/var/lib/postgresql/data ports: - "5432:5432" app: build: context: . dockerfile: ./reader/Dockerfile network: host restart: unless-stopped depends_on: - db environment: DATABASE_URL: postgres://postgres:psqlpassword@db/p1-data GRID_METER_ADDRESS: 0.0.0.0:502 ports: - '502:502' volumes: - ./reader:/usr/src/myapp devices: - "/dev/ttyUSB0:/dev/ttyUSB0" working_dir: /usr/src/myapp solar-app: build: context: . dockerfile: ./solar-reader/Dockerfile network: host restart: unless-stopped depends_on: - db environment: DATABASE_URL: postgres://postgres:psqlpassword@db/solar-data INVERTER_SOCKADDR: "192.168.1.61:502" GRID_METER_ADDRESS: 0.0.0.0:8899 ports: - '8899:8899' volumes: - ./solar-reader:/usr/src/myapp working_dir: /usr/src/myapp grafana: image: grafana/grafana-enterprise container_name: grafana restart: unless-stopped depends_on: - db environment: GF_DASHBOARDS_MIN_REFRESH_INTERVAL: 1s ports: - '3000:3000' volumes: - grafana-storage:/var/lib/grafana volumes: grafana-storage: {} postgres-storage: {}