# ============LICENSE_START=======================================================
# Copyright (c) 2020 Pantheon.tech.
# Modifications Copyright (C) 2021 Bell Canada.
# Modifications Copyright (C) 2021 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.
# ============LICENSE_END=========================================================

version: "3.7"

services:
  #cps-standalone:
  #  container_name: cps-service
  #  image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-service:${VERSION:-latest}
  #  ports:
  #    - "8881:8080"
  #    - "8887:8081"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME:-cps}
  #    DB_PASSWORD: ${DB_PASSWORD:-cps}
  #    #KAFKA_BOOTSTRAP_SERVER: kafka:9092
  #    #notification.data-updated.enabled: 'true'
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  #ncmp-standalone:
  #  container_name: cps-ncmp
  #  image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-ncmp:${VERSION:-latest}
  #  ports:
  #    - "8882:8080"
  #    - "8887:8081"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME:-cps}
  #    DB_PASSWORD: ${DB_PASSWORD:-cps}
  #    DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
  #    DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
  #    #KAFKA_BOOTSTRAP_SERVER: kafka:9092
  #    #notification.data-updated.enabled: 'true'
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  cps-and-ncmp:
    container_name: cps-and-ncmp
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${VERSION:-latest}
    ports:
      - "8883:8080"
      - "8887:8081"
    environment:
      CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
      CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
      DB_HOST: dbpostgresql
      DB_USERNAME: ${DB_USERNAME:-cps}
      DB_PASSWORD: ${DB_PASSWORD:-cps}
      DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
      DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
      #KAFKA_BOOTSTRAP_SERVER: kafka:9092
      #notification.data-updated.enabled: 'true'
    restart: unless-stopped
    depends_on:
      - dbpostgresql

  dbpostgresql:
    container_name: dbpostgresql
    image: postgres:13.2-alpine
    ports:
      - '5432:5432'
    environment:
      POSTGRES_DB: cpsdb
      POSTGRES_USER: ${DB_USERNAME:-cps}
      POSTGRES_PASSWORD: ${DB_PASSWORD:-cps}

#  zookeeper:
#    image: confluentinc/cp-zookeeper:6.1.1
#    environment:
#      ZOOKEEPER_CLIENT_PORT: 2181
#      ZOOKEEPER_TICK_TIME: 2000
#    ports:
#      - 22181:2181
#
#  kafka:
#    image: confluentinc/cp-kafka:6.1.1
#    depends_on:
#      - zookeeper
#    ports:
#      - 29092:29092
#    environment:
#      KAFKA_BROKER_ID: 1
#      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
#      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
#      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
#      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
#      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
