version: '2'
services:
    # btc is an image of bitcoin node which used as base image for btcd and
    # btccli. The environment variables default values determined on stage of
    # container start within starting script.
    btcd:
      image: btcd
      container_name: btcd
      build:
        context: btcd/
      volumes:
        - shared:/rpc
        - bitcoin:/data
      environment:
        - RPCUSER
        - RPCPASS
        - NETWORK
        - DEBUG
        - MINING_ADDRESS
      entrypoint: ["./start-btcd.sh"]

    lnd:
      image: lnd
      container_name: lnd
      build:
        context: ../
        dockerfile: dev.Dockerfile
      environment:
        - RPCUSER
        - RPCPASS
        - NETWORK
        - CHAIN
        - DEBUG
      volumes:
        - shared:/rpc
        - lnd:/root/.lnd
      entrypoint: ["./start-lnd.sh"]
      links:
        - "btcd:blockchain"

volumes:
  # shared volume is need to store the btcd rpc certificates and use it within
  # btcctl and lnd containers.
  shared:
    driver: local

  # bitcoin volume is needed for maintaining blockchain persistence
  # during btcd container recreation.
  bitcoin:
    driver: local

  # lnd volume is used for persisting lnd application data and chain state
  # during container lifecycle.
  lnd:
    driver: local