## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

##
#you need to add mysql drive to alpha pom.xml and saga-dubbo-demo pom.xml first
##
version: '3.0'

services:

  zookeeper:
    image: "docker.io/zookeeper"
    hostname: zookeeper

  database:
      image: "mysql/mysql-server:5.7"
      hostname: mysql
      environment:
        - MYSQL_ROOT_PASSWORD=password
        - MYSQL_DATABASE=saga
        - MYSQL_USER=saga
        - MYSQL_PASSWORD=password

  alpha:
    image: "alpha-server:${TAG}"
    hostname: alpha-server
    ports:
      - "8081:8080"
      - "8091:8090"
    links:
      - "database:mysql.servicecomb.io"
    environment:
      - JAVA_OPTS=-Dspring.profiles.active=mysql
      - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150
    depends_on:
      - database

  servicea:
    image: "servicea:${TAG}"
    hostname: servicea
    links:
      - "zookeeper:zookeeper.servicecomb.io"
      - "alpha:alpha-server.servicecomb.io"
      - "database:mysql.servicecomb.io"
    environment:
      - JAVA_OPTS=  -Dspring.profiles.active=mysql
                                -Dspring.datasource.url=jdbc:mysql://mysql.servicecomb.io:3306/saga
                                -Dspring.datasource.username=saga
                                -Dspring.datasource.password=password
                                -Dzookeeper.url=zookeeper.servicecomb.io:2181
                                -Dserver.port=8071
                                -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                                -Dspring.datasource.initialization-mode=always
      - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
    ports:
      - "8071:8071"
    depends_on:
      - database
      - zookeeper
      - alpha

  serviceb:
    image: "serviceb:${TAG}"
    hostname: serviceb
    links:
      - "zookeeper:zookeeper.servicecomb.io"
      - "alpha:alpha-server.servicecomb.io"
      - "database:mysql.servicecomb.io"
    environment:
      - JAVA_OPTS=  -Dspring.profiles.active=mysql
                                -Dspring.datasource.url=jdbc:mysql://mysql.servicecomb.io:3306/saga
                                -Dspring.datasource.username=saga
                                -Dspring.datasource.password=password
                                -Dzookeeper.url=zookeeper.servicecomb.io:2181
                                -Dserver.port=8072
                                -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                                -Dspring.datasource.initialization-mode=always
      - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
    ports:
      - "8072:8072"
    depends_on:
      - database
      - zookeeper
      - alpha

  servicec:
    image: "servicec:${TAG}"
    hostname: servicec
    links:
      - "zookeeper:zookeeper.servicecomb.io"
      - "alpha:alpha-server.servicecomb.io"
      - "database:mysql.servicecomb.io"
    environment:
      - JAVA_OPTS=  -Dspring.profiles.active=mysql
                                -Dspring.datasource.url=jdbc:mysql://mysql.servicecomb.io:3306/saga
                                -Dspring.datasource.username=saga
                                -Dspring.datasource.password=password
                                -Dzookeeper.url=zookeeper.servicecomb.io:2181
                                -Dserver.port=8073
                                -Dalpha.cluster.address=alpha-server.servicecomb.io:8080
                                -Dspring.datasource.initialization-mode=always
      - WAIT_FOR_SERVICES=mysql.servicecomb.io:3306:150,zookeeper.servicecomb.io:2181:150,alpha-server.servicecomb.io:8080:150
    ports:
      - "8073:8073"
    depends_on:
      - database
      - zookeeper
      - alpha

