# Copyright 2019 AT&T Intellectual Property. All rights reserved
#
# 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:${POLICY_MARIADB_VER}
      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"
   pap:
      image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION}
      container_name: policy-pap
      depends_on:
       - mariadb
      hostname: policy-pap
      ports:
       - "6969:6969"
   api:
      image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION}
      container_name: policy-api
      depends_on:
       - mariadb
      hostname: policy-api
      ports:
       - "9969:6969"
   start_dependencies:
      image: dadarek/wait-for-dependencies
      environment:
        TIMEOUT_LENGTH: 60
      container_name: policy-wait
      depends_on:
        - mariadb
      hostname: policy-wait
      command: mariadb:3306
   start_all:
      image: dadarek/wait-for-dependencies
      environment:
        TIMEOUT_LENGTH: 60
      container_name: policy-wait-all
      depends_on:
        - mariadb
        - pap
        - api
      hostname: policy-wait-all
      command:
        mariadb:3306
        pap:6969
        api:6969
