#
# Copyright 2020 highstreet technologies GmbH and others
#
# 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.

version: "2.4"
services:
  ###################################################
  ####### Base docker image containing the framework
  ###################################################
  nts-ng-base:
    image: ${DOCKER_REPO}nts-ng-base
    build: 
      context: .
      dockerfile: ./deploy/base/ubuntu.Dockerfile
  
  ###################################################
  ####### NTS-NG Manager
  ###################################################
  nts-ng-manager:
    image: ${DOCKER_REPO}nts-ng-manager:${NTS_BUILD_VERSION}
    build:
      context: ./deploy/nts-manager
      labels:
       - "description=nts-ng"
      dockerfile: local.Dockerfile

  ###################################################
  ####### X-RAN
  ###################################################
  nts-ng-x-ran:
    image: ${DOCKER_REPO}nts-ng-x-ran:${NTS_BUILD_VERSION}
    build:
      context: ./deploy/x-ran
      labels:
       - "description=nts-ng"
      dockerfile: local.Dockerfile

  ###################################################
  ####### O-RAN FH
  ###################################################
  nts-ng-o-ran-fh:
    image: ${DOCKER_REPO}nts-ng-o-ran-fh:${NTS_BUILD_VERSION}
    build:
      context: ./deploy/o-ran
      labels:
       - "description=nts-ng"
      dockerfile: local.Dockerfile

  ###################################################
  ####### O-RAN RU FH November Train
  ###################################################
  nts-ng-o-ran-ru-fh:
    image: ${DOCKER_REPO}nts-ng-o-ran-ru-fh:${NTS_BUILD_VERSION}
    build:
      context: ./deploy/o-ran-ru-fh
      labels:
       - "description=nts-ng"
      dockerfile: local.Dockerfile

  ###################################################
  ####### O-RAN DU
  ###################################################
  nts-ng-o-ran-du:
    image: ${DOCKER_REPO}nts-ng-o-ran-du:${NTS_BUILD_VERSION}
    build:
      context: ./deploy/o-ran-du
      labels:
       - "description=nts-ng"
      dockerfile: local.Dockerfile
