#  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.5'

networks:
  default:
    driver: bridge
    name: nonrtric-docker-net

services:
  policy-agent:
    image: "${PMS_IMAGE_BASE}:${PMS_IMAGE_TAG}"
    container_name: policy-agent
    networks:
      default:
        aliases:
          - policy-agent-container
    ports:
      - 8081:8081
      - 8433:8433
    volumes:
      - ./policy-service/config/application-policyagent.yaml:/opt/app/policy-agent/config/application.yaml:ro
      - ./policy-service/config/application_configuration.json:/opt/app/policy-agent/data/application_configuration.json:ro
    # For using own certs instead of the default ones (built into the container),
    # place them in config/ directory, update the application-policyagent.yaml file, and uncomment the following lines
    #  - ./policy-service/config/keystore-policyagent.jks:/opt/app/policy-agent/etc/cert/keystore.jks:ro
    #  - ./policy-service/config/truststore-policyagent.jks:/opt/app/policy-agent/etc/cert/truststore.jks:ro
    #  - ./policy-service/config/application-policyagent.yaml:/opt/app/policy-agent/config/application.yaml:ro
