# 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: "2"
services:
  elasticsearch:
    image: ${ES_IMAGE}:${ES_TAG}
    environment:
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  hbase:
    image: harisekhon/hbase:1.0
  postgres:
    image: postgres:9
    environment:
      POSTGRES_USER: pio
      POSTGRES_PASSWORD: pio
      POSTGRES_INITDB_ARGS: --encoding=UTF8
  localstack:
    image: atlassianlabs/localstack
    environment:
      - SERVICES=s3
      - DEBUG=1
  pio-testing:
    image: predictionio/pio-testing:latest
    depends_on:
      - elasticsearch
      - hbase
      - postgres
      - localstack
    volumes:
      - ~/.ivy2:/root/.ivy2
      - ~/.sbt:/root/.sbt
