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

version: "3.7"

services:
  #cps-standalone:
  #  container_name: cps-service
  #  image: ps-service:${VERSION}
  #  volumes:
  #    - "./application.yml:/app/resources/application.yml"
  #  ports:
  #    - "8881:8080"
  #  environment:
  #    DB_HOST: ${DB_HOST}
  #    DB_USERNAME: ${DB_USERNAME}
  #    DB_PASSWORD: ${DB_PASSWORD}
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  #nf-proxy-standalone:
  #  container_name: cps-nf-proxy
  #  image: cps-nf-proxy:${VERSION}
  #  volumes:
  #    - "./application.yml:/app/resources/application.yml"
  #  ports:
  #    - "8882:8080"
  #  environment:
  #    DB_HOST: ${DB_HOST}
  #    DB_USERNAME: ${DB_USERNAME}
  #    DB_PASSWORD: ${DB_PASSWORD}
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  cps-and-nf-proxy:
    container_name: cps-and-nf-proxy
    image: cps-and-nf-proxy:${VERSION}
    volumes:
      - "./application.yml:/app/resources/application.yml"
    ports:
      - "8883:8080"
    environment:
      DB_HOST: ${DB_HOST}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
    restart: unless-stopped
    depends_on:
      - dbpostgresql

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