# ============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: mysql/mysql-server:5.6
    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"

# 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
    container_name: appc_controller_container
    entrypoint: ["/opt/onap/appc/bin/startODL.sh"]
    ports:
      - "8282:8181"
      - "1830:1830"
      - "9090:9191"
      - "30290:9191"
    links:
      - db:dbhost
      - db:sdnctldb01
      - db:sdnctldb02
    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:80"
    links:
      - appc:sdnhost
    environment:
      - MYSQL_ROOT_PASSWORD=openECOMP1.0
      - CDT_PORT=9090
    logging:
      driver: "json-file"
      options:
        max-size: "30m"
        max-file: "5"

