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

ignoreFor: 'Interoperability between spring-cloud and dubbo is not ready?'

services:
  consul-server:
    image: consul:latest

  sc-dubbo-provider:
    type: app
    basedir: sc-dubbo-provider
    mainClass: org.apache.dubbo.demo.provider.Application
    systemProps:
      - consul.address=consul-server
    waitPortsBeforeRun:
      - consul-server:8500
    checkPorts:
      - 8090
    checkLog: "dubbo service started"
    depends_on:
      - consul-server

  sc-dubbo-consumer:
    type: app
    basedir: sc-dubbo-consumer
    mainClass: org.apache.dubbo.samples.microservices.sc.Application
    systemProps:
      - consul.address=consul-server
    waitPortsBeforeRun:
      - consul-server:8500
    checkPorts:
      - 8099
    checkLog: "dubbo service started"
    depends_on:
      - consul-server

  sc-dubbo-consumer-test:
    type: test
    basedir: sc-dubbo-consumer
    tests:
      - "**/*IT.class"
    systemProps:
      - consul.address=consul-server
      - consumer.address=sc-dubbo-consumer
    waitPortsBeforeRun:
      - consul-server:8500
      - sc-dubbo-provider:8090
      - sc-dubbo-consumer:8099
    depends_on:
      - consul-server
      - sc-dubbo-provider
      - sc-dubbo-consumer
