services:
  rev_proxy:
    build: ./reverse-proxy
    ports:
      - "127.0.0.1:8080:80"
    depends_on:
      - server
      - client
    restart: unless-stopped
  
  client:
    build: ./client
    restart: unless-stopped
  
  server:
    build: ./server
    environment:
      ROOT_URL: "http://localhost:8080/api"
    #ports:
    #  - "127.0.0.1:8080:80"
    restart: unless-stopped
    depends_on:
      neo4j:
        condition: service_healthy
  neo4j:
    image: neo4j:latest
    volumes:
        - neo4jconfig:/config
        - neo4jdata:/data
        - neo4jplugins:/plugins
    environment:
      # neo4j isn't exposed to the internet so having the password checked into version control doesn't matter
        - NEO4J_AUTH=neo4j/your_password
    ports:
      # useful for dev
      - "127.0.0.1:7474:7474"
      - "127.0.0.1:7687:7687"
    restart: unless-stopped
    healthcheck:
      test: wget http://localhost:7474 || exit 1
      interval: 1s
      timeout: 10s
      retries: 20
      start_period: 3s

volumes:
  neo4jconfig:
  neo4jdata:
  neo4jplugins:
