version: '3'

volumes:
  persistent-data:

services:
  rove-accountant:
    build:
      context: .
      dockerfile: Dockerfile
    image: rove:latest
    ports:
      - "8081:8081"
    environment:
      - HOST_ADDRESS=:8081
      - DATA_PATH=/mnt/rove-server
    volumes:
      - persistent-data:/mnt/rove-server:rw
    command: [ ./rove-accountant ]

  rove-reverse-proxy:
    build:
      context: .
      dockerfile: Dockerfile
    image: rove:latest
    ports:
      - "8080:8080"
    environment:
      - HOST_ADDRESS=:8080
      - GRPC_ENDPOINT=rove-server:8082
    command: [ ./rove-reverse-proxy ]

  rove-server:
    depends_on: [ rove-accountant, rove-reverse-proxy ]
    build:
      context: .
      dockerfile: Dockerfile
    image: rove:latest
    ports:
      - "8082:8082"
    environment:
      - HOST_ADDRESS=:8082
      - DATA_PATH=/mnt/rove-server
      - ACCOUNTANT_ADDRESS=rove-accountant:8081
    volumes:
      - persistent-data:/mnt/rove-server:rw

  rove-tests:
    depends_on: [ rove-server ]
    build:
      context: .
      dockerfile: Dockerfile
    image: rove:latest
    environment:
      - ACCOUNTANT_ADDRESS=rove-accountant:8081
      - ROVE_SERVER_ADDRESS=rove-reverse-proxy:8080
    command: [ "go", "test", "-v", "./...", "--tags=integration", "-cover", "-coverprofile=/mnt/coverage-data/c.out", "-count", "1" ]
    volumes:
      - /tmp/coverage-data:/mnt/coverage-data:rw