## ---------------------------------------------------------------------------
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements.  See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------

version: '3.0'

services:
  database:
    image: "postgres"
    hostname: postgres
    environment:
      - POSTGRES_DB=saga
      - POSTGRES_USER=saga
      - POSTGRES_PASSWORD=password

  alpha:
    image: "alpha-server:${TAG}"
    hostname: alpha-server
    links:
      - "database:postgresql.servicecomb.io"
      - "grafana:grafana.servicecomb.io"
    environment:
      - JAVA_OPTS=-javaagent:/maven/saga/aspectjweaver.jar -Dspring.profiles.active=prd -Dkamon.statsd.hostname=grafana.servicecomb.io -Dkamon.statsd.port=8125 -Dkamon.modules.kamon-annotation.auto-start=yes  -Dkamon.modules.kamon-log-reporter.auto-start=yes -Dkamon.modules.kamon-statsd.auto-start=yes
      - WAIT_FOR_SERVICES=postgresql.servicecomb.io:5432:150,grafana.servicecomb.io:80:150
    depends_on:
      - database
      - grafana

  grafana:
    image: "kamon/grafana_graphite"
    hostname: grafana
    ports:
      - "9081:80"
