# ============LICENSE_START==========================================
# ONAP : APPC
# ===================================================================
# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
# ===================================================================
#
# Unless otherwise specified, all software contained herein is licensed
# under the Apache License, Version 2.0 (the License);
# you may not use this software 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.
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
# ============LICENSE_END============================================
version: '2'

networks:
  default:
    driver: bridge

services:
  db:
    image: mariadb:10.4.3
    container_name: sdnc_db_container
    ports:
      - "3306"
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
      - MYSQL_ROOT_HOST=%
    logging:
      driver: "json-file"
      options:  
        max-size: "30m"
        max-file: "5"

  ansible:
    image: onap/ccsdk-ansible-server-image:latest
    depends_on :
      - db
    container_name: appc_ansible_container
    entrypoint: ["/opt/onap/ccsdk/startAnsibleServer.sh"]
    ports:
      - "8000"
    links:
      - db:dbhost
      - db:sdnctldb01
      - db:sdnctldb02
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
    logging:
      driver:   "json-file"
      options:
        max-size: "30m"
        max-file: "5"


# Tweaking SDNC_CONFIG_DIR temporarily from ../sdnc/.. to ../appc/.. since it may be needed in this script
#    to map to SDN-C AAI Service Bundle's AAI Activator class inside the gerrit sdnc/adaptors repo, so that
#    the AAI Service bundle loads APP-C's aaiclient.properties instead of SDN-C's aaiclient.properties.
  appc:
    image: "onap/appc-image:latest"
    depends_on :
      - db
      - ansible
    container_name: appc_controller_container
    entrypoint: ["/opt/onap/appc/bin/startODL.sh"]
    ports:
      - "8443:8443"
      - "8282:8181"
      - "1830:1830"
      - "9090:9191"
      - "30290:9191"
    links:
      - db:dbhost
      - db:sdnctldb01
      - db:sdnctldb02
      - ansible:ansiblehost
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
      - SDNC_CONFIG_DIR=/opt/onap/appc/data/properties
      - APPC_CONFIG_DIR=/opt/onap/appc/data/properties
      - DMAAP_TOPIC_ENV=SUCCESS
    logging:
      driver: "json-file"
      options:
        max-size: "30m"
        max-file: "5"


  dgbuilder:
    image: "onap/ccsdk-dgbuilder-image:latest"
    depends_on:
      - db
    container_name: ccsdk_dgbuilder_container
    entrypoint:
       - "/bin/bash"
       - "-c"
       - "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"
    ports:
      - "3000:3100"
    links:
      - db:dbhost
      - db:sdnctldb01
      - db:sdnctldb02
      - appc:sdnhost
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
      - SDNC_CONFIG_DIR=/opt/onap/ccsdk/data/properties
    logging:
      driver: "json-file"
      options:
        max-size: "30m"
        max-file: "5"

  cdt:
    image: "onap/appc-cdt-image:latest"
    depends_on:
      - db
    container_name: appc_cdt_container
    entrypoint:
       - "/opt/startCdt.sh"
    ports:
      - "8080:18080"
    links:
      - appc:sdnhost
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
      - CDT_PORT=9090
    logging:
      driver: "json-file"
      options:
        max-size: "30m"
        max-file: "5"

