#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
#  ========================================================================
#  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.0'
services:
  policy-agent:
    image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-policy-agent:2.0.0
    container_name: policy-agent
    networks:
      default:
        aliases:
          - policy-agent-container
    ports:
      - 8081:8081
      - 8433:8433
    volumes:
      - ./config:/opt/app/policy-agent/config:ro

  a1-sim-OSC:
    image: nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator:2.0.0
    container_name: a1-sim-OSC
    networks:
      - default
    ports:
      - 30001:8085
      - 30002:8185
    environment:
      - A1_VERSION=OSC_2.1.0
      - REMOTE_HOSTS_LOGGING=1
      - ALLOW_HTTP=true

  a1-sim-STD:
    image: nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator:2.0.0
    container_name: a1-sim-STD
    networks:
      - default
    ports:
      - 30003:8085
      - 30004:8185
    environment:
      - A1_VERSION=STD_1.1.3
      - REMOTE_HOSTS_LOGGING=1
      - ALLOW_HTTP=true

  policy-control-panel:
    image: nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel:2.0.0
    container_name: policy-control-panel
    networks:
      - default
    ports:
      - 8080:8080
      - 8082:8082
