version: '3'

services:
  nodered:
    image: "nodered/node-red:latest"
    environment: {}
    ports:
      - "1880:1880"
    volumes:
      - type: bind
        source: data
        target: /data
      - type: bind
        source: .
        target: /node-red-contrib-dulonode
    restart: unless-stopped
    depends_on:
      nodered-init: 
        condition: service_completed_successfully

  mqtt:
    image: "eclipse-mosquitto:latest"
    environment: {}
    ports:
      - "1883:1883"
    restart: unless-stopped
    entrypoint: 
      - "/bin/sh"
      - "-c"
      - "mosquitto -c /mosquitto-no-auth.conf"
    depends_on:
      nodered-init: 
        condition: service_completed_successfully

  nodered-init:
    image: "nodered/node-red:latest"
    volumes:
      - type: bind
        source: data
        target: /data
      - type: bind
        source: .
        target: /node-red-contrib-dulonode
    entrypoint: 
      - "/bin/sh"
      - "-c"
      - |
        cd /node-red-contrib-dulonode &&
        mkdir -p dist &&
        npm pack --pack-destination dist
        npm install ./dist/node-red-contrib-dulonode-*.tgz --prefix /data
    restart: "no"