# Copyright (C) 2019 Nordix Foundation.
#
# Licensed 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'
networks:
  default:
    driver: bridge
services:
   mariadb:
      image: mariadb:10.2.14
      container_name: mariadb
      hostname: mariadb
      command: ['--lower-case-table-names=1', '--wait_timeout=28800']
      env_file: config/db/db.conf
      volumes:
         - ./config/db:/docker-entrypoint-initdb.d
      ports:
       - "3306:3306"
   dmaap:
      image: dmaap/simulator
      container_name: dmaap-simulator
      hostname: dmaap-simulator
      ports:
       - "3904:3904"
   pap:
      image: nexus3.onap.org:10001/onap/policy-pap:2.0.0-SNAPSHOT-latest
      container_name: policy-pap
      depends_on:
       - mariadb
       - dmaap
      hostname: policy-pap
      volumes:
         - ./config/pap/:/opt/app/policy/pap/etc/
   api:
      image: nexus3.onap.org:10001/onap/policy-api
      container_name: policy-api
      depends_on:
       - mariadb
      hostname: policy-api
   apex:
      image: nexus3.onap.org:10001/onap/policy-apex-pdp:2.1-SNAPSHOT-latest
      container_name: policy-apex-pdp
      depends_on:
       - mariadb
       - dmaap
       - pap
       - api
      hostname: policy-apex-pdp
      command: ['/opt/app/policy/apex-pdp/bin/apexOnapPf.sh', '-c', '/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json', '-p', '/opt/app/policy/apex-pdp/etc/onappf/config/topic.properties']
      volumes:
         - ./config/apex-pdp/:/opt/app/policy/apex-pdp/etc/onappf/config/
      ports:
       - "6969:6969"
       - "23324:23324"
   start_dependencies:
      image: dadarek/wait-for-dependencies
      container_name: policy-wait
      depends_on:
        - mariadb
        - dmaap
      hostname: policy-wait
      command:
        - mariadb:3306
        - dmaap:3904
