X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=docker-compose%2Fdocker-compose.yml;h=d0a157e8907e0fc62bfa820094fe00ff97215a2e;hb=refs%2Fheads%2Fmaster;hp=9edea3526ba18f8ded2724074480323a3020e79a;hpb=738a42d10923eba650f3d695afef2c08b4ab1813;p=cps.git diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml old mode 100755 new mode 100644 index 9edea3526b..e9fd9da60c --- a/docker-compose/docker-compose.yml +++ b/docker-compose/docker-compose.yml @@ -1,7 +1,7 @@ # ============LICENSE_START======================================================= # Copyright (c) 2020 Pantheon.tech. # Modifications Copyright (C) 2021 Bell Canada. -# Modifications Copyright (C) 2021-2022 Nordix Foundation. +# Modifications Copyright (C) 2022-2025 OpenInfra Foundation Europe. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,152 +16,255 @@ # limitations under the License. # ============LICENSE_END========================================================= -version: "3.7" - services: - ### Services cps-service, cps-ncmp, zookeeper and kafka are commented below, these - ### services can be un-commented and used on need to use basis. Only minimal - ### services will run (dbpostgresql, cps-and-ncmp and ncmp-dmi-plugin) by default. - - #cps-standalone: - # container_name: cps-service - # image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-service:${VERSION:-latest} - # ports: - # - "8881:8080" - # - "8887:8081" - # environment: - # CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser} - # CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!} - # DB_HOST: dbpostgresql - # DB_USERNAME: ${DB_USERNAME:-cps} - # DB_PASSWORD: ${DB_PASSWORD:-cps} - # #KAFKA_BOOTSTRAP_SERVER: kafka:9092 - # #notification.data-updated.enabled: 'true' - # #NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*' - # restart: unless-stopped - # depends_on: - # - dbpostgresql - - #ncmp-standalone: - # container_name: cps-ncmp - # image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-ncmp:${VERSION:-latest} - # ports: - # - "8882:8080" - # - "8887:8081" - # environment: - # CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser} - # CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!} - # DB_HOST: dbpostgresql - # DB_USERNAME: ${DB_USERNAME:-cps} - # DB_PASSWORD: ${DB_PASSWORD:-cps} - # DMI_USERNAME: ${DMI_USERNAME:-cpsuser} - # DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!} - # #KAFKA_BOOTSTRAP_SERVER: kafka:9092 - # #notification.data-updated.enabled: 'true' - # #NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*' - # restart: unless-stopped - # depends_on: - # - dbpostgresql - - # zookeeper: - # image: confluentinc/cp-zookeeper:6.2.1 - # environment: - # ZOOKEEPER_CLIENT_PORT: 2181 - # ZOOKEEPER_TICK_TIME: 2000 - # ports: - # - 22181:2181 - # - # kafka: - # image: confluentinc/cp-kafka:6.2.1 - # depends_on: - # - zookeeper - # ports: - # - 29092:29092 - # environment: - # KAFKA_BROKER_ID: 1 - # KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - # KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 - # KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT - # KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT - # KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + + ### docker-compose up -d -> run CPS with stubbed dmi-plugin (DMI-stub, and monitoring services for k6 testing) + ### docker-compose --profile tracing up -d -> run CPS with stubbed dmi-plugin (DMI-stub for k6 testing with jaeger tracing) + ### docker-compose -f dmi-services.yml up -d -> run ONAP-DMI plugin, and related services such as SDNC, and PNF-Simulator + ### docker-compose -f docker-compose.yml -f dmi-services.yml up -d -> run CPS with dmi-plugin (cps-base, and ONAP-DMI services for CSIT testing) + ### docker-compose --project-name endurance --env-file env/endurance.env up -d -> run CPS with DMI-stub for Endurance testing + ### docker-compose --project-name endurance down --volumes -> stop and remove containers and volumes + ### To disable notification make notification.enabled to false and comment out kafka/zookeeper services + ### DEBUG: Look for '### DEBUG' comments to enable CPS-NCMP debugging dbpostgresql: - container_name: dbpostgresql - image: postgres:13.2-alpine + container_name: ${DB_CONTAINER_NAME:-dbpostgresql} + image: postgres:14.1-alpine ports: - ${DB_PORT:-5432}:5432 environment: POSTGRES_DB: cpsdb POSTGRES_USER: ${DB_USERNAME:-cps} POSTGRES_PASSWORD: ${DB_PASSWORD:-cps} + volumes: + - ./config/postgres-init.sql:/docker-entrypoint-initdb.d/postgres-init.sql + deploy: + resources: + reservations: + cpus: '1' + memory: 1G + limits: + cpus: '6' + memory: 3G + healthcheck: + test: pg_isready -U ${DB_USERNAME:-cps} -d cpsdb || exit 1 # This command runs inside the container, returning 0 for success, non-zero for failure. + timeout: 110s # Time-out of the above test command. + interval: 10s # How often the health is run. + retries: 10 # If 10 health checks fail, the container is unhealthy. - cps-and-ncmp: - container_name: cps-and-ncmp + cps-and-ncmp-template: image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${CPS_VERSION:-latest} - ports: - - ${CPS_CORE_PORT:-8883}:8080 - - ${CPS_CORE_MANAGEMENT_PORT:-8887}:8081 + ### DEBUG: Uncomment next line to enable java debugging (ensure 'ports' aligns with 'deploy') + ### ports: + ### - ${CPS_CORE_DEBUG_PORT:-5005}:5005 environment: - CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser} - CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!} DB_HOST: ${DB_HOST:-dbpostgresql} DB_USERNAME: ${DB_USERNAME:-cps} DB_PASSWORD: ${DB_PASSWORD:-cps} DMI_USERNAME: ${DMI_USERNAME:-cpsuser} DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!} - KAFKA_BOOTSTRAP_SERVER: kafka:9092 - notification.data-updated.enabled: 'true' - NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*' - TIMERS_ADVISED-MODULES-SYNC_SLEEP-TIME-MS: 2000 - restart: unless-stopped + KAFKA_BOOTSTRAP_SERVER: kafka:29092 + notification.enabled: 'true' + ONAP_TRACING_ENABLED: 'false' + ONAP_OTEL_SAMPLER_JAEGER_REMOTE_ENDPOINT: http://jaeger-service:14250 + ONAP_OTEL_EXPORTER_ENDPOINT: http://jaeger-service:4317 + POLICY_SERVICE_ENABLED: 'false' + POLICY_SERVICE_DEFAULT_DECISION: 'deny from env' + CPS_MONITORING_MICROMETER_JVM_EXTRAS: 'true' + JAVA_TOOL_OPTIONS: "-XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0" + ### DEBUG: Uncomment next line to enable java debugging + ### JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 + restart: on-failure:3 + deploy: + replicas: 0 + resources: + limits: + cpus: '3' + memory: 3G + memswap_limit: 3G + healthcheck: + test: wget -q -O - http://localhost:8080/actuator/health/readiness | grep -q '{"status":"UP"}' || exit 1 + interval: 10s + timeout: 10s + retries: 10 + start_period: 60s + + cps-and-ncmp-0: + extends: + service: cps-and-ncmp-template + container_name: ${CPS_INSTANCE_0_CONTAINER_NAME:-cps-and-ncmp-0} + deploy: + replicas: 1 + hostname: cps-ncmp-0 + ports: + - ${CPS_INSTANCE_0_REST_PORT:-8698}:8080 depends_on: - - dbpostgresql + dbpostgresql: + condition: service_healthy + + ### DEBUG: For easier debugging use just 1 instance and comment out below + cps-and-ncmp-1: + extends: + service: cps-and-ncmp-template + container_name: ${CPS_INSTANCE_1_CONTAINER_NAME:-cps-and-ncmp-1} + deploy: + replicas: 1 + hostname: cps-ncmp-1 + ports: + - ${CPS_INSTANCE_1_REST_PORT:-8699}:8080 + depends_on: + dbpostgresql: + condition: service_healthy - ### if kafka is not required comment out zookeeper and kafka ### + nginx: + container_name: ${NGINX_CONTAINER_NAME:-nginx-loadbalancer} + image: nginx:latest + ports: + - ${CPS_CORE_PORT:-8883}:80 + depends_on: + - cps-and-ncmp-0 + ### DEBUG: For easier debugging use just 1 instance and comment out below + - cps-and-ncmp-1 + volumes: + - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf + - ./config/nginx/proxy_params:/etc/nginx/proxy_params + healthcheck: + test: curl -fs http://localhost/actuator/health/readiness || exit 1 + interval: 10s + timeout: 10s + retries: 3 + start_period: 60s + + ### if kafka is not required, comment out zookeeper and kafka zookeeper: - image: confluentinc/cp-zookeeper:6.2.1 - container_name: zookeeper + image: confluentinc/cp-zookeeper:7.8.0 + container_name: ${ZOOKEEPER_CONTAINER_NAME:-zookeeper} ports: - - '2181:2181' + - ${ZOOKEEPER_PORT:-2181}:2181 environment: ZOOKEEPER_CLIENT_PORT: 2181 + healthcheck: + test: nc -z localhost 2181 || exit 1 + interval: 10s + timeout: 10s + retries: 3 + start_period: 30s kafka: - image: confluentinc/cp-kafka:6.2.1 - container_name: kafka + image: confluentinc/cp-kafka:7.8.0 + container_name: ${KAFKA_CONTAINER_NAME:-kafka} ports: - - "19092:19092" + - ${KAFKA_PORT:-9092}:9092 depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,CONNECTIONS_FROM_HOST://localhost:19092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONNECTIONS_FROM_HOST:PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,CONNECTIONS_FROM_HOST://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + healthcheck: + test: kafka-topics --bootstrap-server kafka:29092 --list || exit 1 + interval: 10s + timeout: 10s + retries: 3 + start_period: 30s - ### Comment out this section if dmi plugin is not required ### - ncmp-dmi-plugin: - container_name: ncmp-dmi-plugin - image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/ncmp-dmi-plugin:${DMI_VERSION:-1.2.0-SNAPSHOT-latest} + ncmp-dmi-plugin-demo-and-csit-stub: + container_name: ${NCMP_DMI_PLUGIN_DEMO_AND_CSIT_STUB_CONTAINER_NAME:-ncmp-dmi-plugin-demo-and-csit-stub} + image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/dmi-stub:${DMI_DEMO_STUB_VERSION:-1.8.0-SNAPSHOT} ports: - - ${DMI_PORT:-8783}:8080 - - ${DMI_MANAGEMENT_PORT:-8787}:8081 + - ${DMI_DEMO_STUB_PORT:-8784}:8092 environment: - CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser} - CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!} - CPS_CORE_HOST: ${CPS_CORE_HOST:-cps-and-ncmp} - CPS_CORE_PORT: ${CPS_CORE_PORT:-8080} - CPS_CORE_USERNAME: ${CPS_CORE_USERNAME:-cpsuser} - CPS_CORE_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!} - SDNC_HOST: ${SDNC_HOST:-sdnc} - SDNC_PORT: ${SDNC_PORT:-8181} - SDNC_USERNAME: ${SDNC_USERNAME:-admin} - SDNC_PASSWORD: ${SDNC_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U} - DMI_SERVICE_URL: ${DMI_SERVICE_URL:-http://ncmp-dmi-plugin:8783} - DMI_USERNAME: ${DMI_USERNAME:-cpsuser} - DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!} - KAFKA_BOOTSTRAP_SERVER: kafka:9092 - notification.data-updated.enabled: 'true' - NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*' + KAFKA_BOOTSTRAP_SERVER: kafka:29092 + NCMP_CONSUMER_GROUP_ID: ncmp-group + NCMP_ASYNC_M2M_TOPIC: ncmp-async-m2m + MODULE_INITIAL_PROCESSING_DELAY_MS: 180000 + MODULE_REFERENCES_DELAY_MS: 100 + MODULE_RESOURCES_DELAY_MS: 1000 + READ_DATA_FOR_CM_HANDLE_DELAY_MS: 300 + WRITE_DATA_FOR_CM_HANDLE_DELAY_MS: 670 + restart: unless-stopped + healthcheck: + test: wget -q -O - http://localhost:8092/actuator/health/readiness | grep -q '{"status":"UP"}' || exit 1 + interval: 10s + timeout: 10s + retries: 3 + start_period: 30s + + policy-executor-stub: + container_name: ${POLICY_EXECUTOR_STUB_CONTAINER_NAME:-policy-executor-stub} + image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/policy-executor-stub:latest + ports: + - ${POLICY_EXECUTOR_STUB_PORT:-8785}:8093 + restart: unless-stopped + # Note policy-executor-stub does not have a healthcheck as it does not expose /actuator/health endpoint + + prometheus: + container_name: ${PROMETHEUS_CONTAINER_NAME:-prometheus} + image: prom/prometheus:latest + ports: + - ${PROMETHEUS_PORT:-9090}:9090 + restart: always + volumes: + - ./config/prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus_data:/prometheus + environment: + - PROMETHEUS_RETENTION_TIME=${PROMETHEUS_RETENTION_TIME:-30d} + + + grafana: + image: grafana/grafana:latest + container_name: ${GRAFANA_CONTAINER_NAME:-grafana} + depends_on: + - prometheus + ports: + - ${GRAFANA_PORT:-3000}:3000 + volumes: + - ./config/grafana/provisioning/:/etc/grafana/provisioning/ + - ./config/grafana/jvm-micrometer-dashboard.json:/var/lib/grafana/dashboards/jvm-micrometer-dashboard.json + - ./config/grafana/inventory-dashboard.json:/var/lib/grafana/dashboards/inventory-dashboard.json + - ./config/grafana/data-dashboard.json:/var/lib/grafana/dashboards/data-dashboard.json + - ./config/grafana/postgresql-statistics-dashboard.json:/var/lib/grafana/dashboards/postgresql-statistics-dashboard.json + - ./config/grafana/cps-database-pool.json:/var/lib/grafana/dashboards/cps-database-pool.json + - grafana:/var/lib/grafana + environment: + - GF_SECURITY_ADMIN_PASSWORD=admin + - GF_SERVER_DOMAIN=localhost + + + kafka-ui: + container_name: ${KAFKA_UI_CONTAINER_NAME:-kafka-ui} + image: provectuslabs/kafka-ui:latest + ports: + - ${KAFKA_UI_PORT:-8089}:8080 + environment: + DYNAMIC_CONFIG_ENABLED: 'true' + KAFKA_CLUSTERS_0_NAME: 'cps-kafka-local' + KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 + + + jaeger-service: + container_name: ${JAEGER_SERVICE_CONTAINER_NAME:-jaeger-service} + image: jaegertracing/all-in-one:latest + ports: + - ${JAEGER_SERVICE_PORT:-16686}:16686 restart: unless-stopped + profiles: + - tracing + + postgres-exporter: + container_name: ${POSTGRES_EXPORTER_CONTAINER_NAME:-postgres-exporter} + image: quay.io/prometheuscommunity/postgres-exporter + environment: + - DATA_SOURCE_NAME=postgresql://${DB_USERNAME:-cps}:${DB_PASSWORD:-cps}@${DB_CONTAINER_NAME:-dbpostgresql}:5432/postgres?sslmode=disable + ports: + - ${POSTGRES_EXPORTER_PORT:-9187}:9187 + depends_on: + - dbpostgresql + +volumes: + grafana: + driver: local + prometheus_data: + driver: local