# ============LICENSE_START=======================================================
# Copyright (c) 2020 Pantheon.tech.
# Modifications Copyright (C) 2021 Bell Canada.
# Modification (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: onap/cps-service:${VERSION:-latest}
  #  ports:
  #    - "8881:8080"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME}
  #    DB_PASSWORD: ${DB_PASSWORD}
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  #ncmp-standalone:
  #  container_name: cps-ncmp
  #  image: onap/cps-ncmp:${VERSION:-latest}
  #  ports:
  #    - "8882:8080"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME}
  #    DB_PASSWORD: ${DB_PASSWORD}
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  cps-and-ncmp:
    container_name: cps-and-ncmp
    image: onap/cps-and-ncmp:${VERSION:-latest}
    ports:
      - "8883:8080"
    environment:
      CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
      CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
      DB_HOST: dbpostgresql
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
    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}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
