## ---------------------------------------------------------------------------
## 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:
  payment:
    image: "tcc-payment:${TAG}"
    hostname: payment
    external_links:
      - "alpha:alpha-server.servicecomb.io"
    environment:
      - JAVA_OPTS=-Dspring.profiles.active=prd
    ports:
      - "8081:8080"

  inventory:
    image: "tcc-inventory:${TAG}"
    hostname: inventory
    external_links:
      - "alpha:alpha-server.servicecomb.io"
    environment:
      - JAVA_OPTS=-Dspring.profiles.active=prd
    ports:
      - "8082:8080"

  ordering:
    image: "tcc-ordering:${TAG}"
    hostname: ordering
    external_links:
      - "alpha:alpha-server.servicecomb.io"
      - "payment:payment.servicecomb.io"
      - "inventory:inventory.servicecomb.io"
    environment:
      - WAIT_FOR_SERVICES=payment.servicecomb.io:8080:150,inventory.servicecomb.io:8080:150
    ports:
      - "8083:8080"
    depends_on:
      - payment
      - inventory
