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

# global system props for all service
systemProps:
  - mysql.address=seata-mysql
  - mysql.port=3306

services:
  zookeeper:
    image: zookeeper:latest
    expose:
      - 2181

  seata-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=seata-demo
      - MYSQL_ROOT_PASSWORD=helloworld
    expose:
      - 3306
    volumes:
      - ${_basedir}/src/main/resources/docker/mysql/sql:/docker-entrypoint-initdb.d

  seata-server:
    #build: ${_basedir}/src/main/resources/docker/seata
    #removeOnExit: true
    image: seataio/seata-server:latest
    volumes:
      - ${_basedir}/src/main/resources/docker/seata/conf:/root/seata-config
    expose:
      - 8091
    depends_on:
      - seata-mysql

  storage-service:
    type: app
    basedir: .
    mainClass: org.apache.dubbo.samples.starter.DubboStorageServiceStarter
    systemProps:
      - zookeeper.address=zookeeper
      - zookeeper.port=2181
    waitPortsBeforeRun:
      - zookeeper:2181
    expose:
      - 20882
    depends_on:
      - seata-mysql

  account-service:
    type: app
    basedir: .
    mainClass: org.apache.dubbo.samples.starter.DubboAccountServiceStarter
    systemProps:
      - zookeeper.address=zookeeper
      - zookeeper.port=2181
    waitPortsBeforeRun:
      - zookeeper:2181
    expose:
      - 20881
    depends_on:
      - seata-mysql

  order-service:
    type: app
    basedir: .
    mainClass: org.apache.dubbo.samples.starter.DubboOrderServiceStarter
    systemProps:
      - zookeeper.address=zookeeper
      - zookeeper.port=2181
    waitPortsBeforeRun:
      - zookeeper:2181
    expose:
      - 20883
    depends_on:
      - seata-mysql

  transaction-test:
    type: test
    basedir: .
    tests:
      - "**/*IT.class"
    systemProps:
      - zookeeper.address=zookeeper
      - zookeeper.port=2181
    waitPortsBeforeRun:
      - zookeeper:2181
      - storage-service:20882
      - account-service:20881
      - order-service:20883

