# ============LICENSE_START=======================================================
# Copyright (C) 2021 Nordix Foundation.
# Modifications Copyright (C) 2021 Bell Canada.
# ================================================================================
# 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
version: "3.7"

services:

  cps-temporal:
    container_name: cps-temporal
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-temporal:latest
    ports:
      - '8082:8080'
      - '8081:8081'
    environment:
      DB_HOST: timescaledb
      DB_PORT: 5432
      DB_USERNAME: cpstemporal
      DB_PASSWORD: cpstemporal
      KAFKA_BOOTSTRAP_SERVER: kafka:9092
      APP_USERNAME: cpstemporal
      APP_PASSWORD: cpstemporal
    restart: unless-stopped
    depends_on:
      - timescaledb
      - kafka

  timescaledb:
    container_name: timescaledb
    image: timescale/timescaledb:2.1.1-pg13
    ports:
      - '5433:5432'
    environment:
      POSTGRES_DB: cpstemporaldb
      POSTGRES_USER: cpstemporal
      POSTGRES_PASSWORD: cpstemporal

  zookeeper:
    image: confluentinc/cp-zookeeper:6.1.1
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181

  kafka:
    image: confluentinc/cp-kafka:6.1.1
    container_name: kafka
    ports:
      - "19092:19092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,CONNECTIONS_FROM_HOST://localhost:19092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONNECTIONS_FROM_HOST:PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  cps-and-ncmp:
    container_name: cps-and-ncmp
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${VERSION:-latest}
    ports:
      - "8083:8080"
      - "8087: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'
      NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
    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}
