Skip to content
Snippets Groups Projects
docker-compose.yaml 6.26 KiB
Newer Older
##
# Copyright 2019 ETSI
#
# 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: '3'
volumes:
garciadeblas's avatar
garciadeblas committed
  ro:
  ro_db:
  mongo_db:
  mon_db:
lavado's avatar
lavado committed
  pol_db:
  osm_packages:
  prom_db:
      name: ${OSM_NETWORK:-netosm}
    #driver: overlay
    #driver_opts:
    #  com.docker.network.driver.mtu: "1446"
services:
  zookeeper:
    image: wurstmeister/zookeeper:${ZOOKEEPER_TAG:-latest}
#    ports:
#      - "2181:2181"
    networks:
      - netOSM
    healthcheck:
      test: echo ruok | nc -w 2 localhost 2181
      interval: 20s
      timeout: 10s
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    image: wurstmeister/kafka:${KAFKA_TAG:-latest}
    networks:
      - netOSM
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LOG_RETENTION_HOURS: 24
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      test: echo ruok | nc -w 2 zookeeper 2181
      interval: 20s
      timeout: 10s
      retries: 5
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    #depends_on:
    #  - zookeeper
  mongo:
    image: mongo
#    ports:
#      - "27017:27017"
    networks:
      - netOSM
    volumes:
      - mongo_db:/data/db
lavado's avatar
lavado committed
  prometheus:
    image: prom/prometheus:${PROMETHEUS_TAG:-latest}
    hostname: prometheus
    ports:
      - "${OSM_PROM_PORTS:-9091:9090}"
    volumes:
      - ./prometheus/:/etc/prometheus/
      - prom_db:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--web.enable-lifecycle'
lavado's avatar
lavado committed
    networks:
      - netOSM
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
  prometheus-cadvisor:
    image: google/cadvisor:${PROMETHEUS_CADVISOR_TAG:-latest}
    ports:
      - "${OSM_PROM_CADVISOR_PORTS:-8080:8080}"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk/:/dev/disk:ro
    networks:
    image: ${DOCKER_USER:-opensourcemano}/keystone:${TAG:-8}
    networks:
      - netOSM
    environment:
      DB_HOST: mysql
    env_file:
      - ./keystone.env
    ports:
      - "${OSM_KEYSTONE_PORTS:-5000:5000}"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    image: ${DOCKER_USER:-opensourcemano}/nbi:${TAG:-8}
    networks:
      - netOSM
    volumes:
      - osm_packages:/app/storage
    environment:
      OSMNBI_DATABASE_HOST: mongo
      OSMNBI_MESSAGE_HOST: kafka
    env_file:
      - ./nbi.env
      - "${OSM_NBI_PORTS:-9999:9999}"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    #depends_on:
    #  - kafka
    #  - mongo
  lcm:
    image: ${DOCKER_USER:-opensourcemano}/lcm:${TAG:-8}
    volumes:
      - osm_packages:/app/storage
    environment:
      OSMLCM_RO_HOST: ro
      OSMLCM_DATABASE_HOST: mongo
      OSMLCM_MESSAGE_HOST: kafka
    env_file:
      - ./lcm.env
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    #depends_on:
    #  - kafka
    #  - mongo
    #  - ro
      netOSM:
        aliases:
          - ro-db
    volumes:
      - ro_db:/var/lib/mysql
    env_file:
      - ./ro-db.env
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
#    ports:
#      - "3306:3306"
    image: ${DOCKER_USER:-opensourcemano}/ro:${TAG:-8}
    networks:
      - netOSM
    environment:
      RO_DB_HOST: mysql
    env_file:
      - ./ro.env
    #depends_on:
garciadeblas's avatar
garciadeblas committed
    volumes:
      - ro:/var/log/osm
      - "${OSM_RO_PORTS:-9090:9090}"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"
    image: ${DOCKER_USER:-opensourcemano}/mon:${TAG:-8}
    volumes:
      - mon_db:/app/database
      OSMMON_MESSAGE_HOST: kafka
      OSMMON_MESSAGE_PORT: 9092
    env_file:
      - ./mon.env
lavado's avatar
lavado committed
    ports:
      - "${OSM_MON_PORTS:-8662:8662}"
    #depends_on:
    #  - kafka
    logging:
        driver: "json-file"
        options:
            max-file: 5
            max-size: 10m
    image: ${DOCKER_USER:-opensourcemano}/pol:${TAG:-8}
lavado's avatar
lavado committed
    volumes:
      - pol_db:/app/database
      OSMPOL_MESSAGE_HOST: kafka
      OSMPOL_MESSAGE_PORT: 9092
    env_file:
      - ./pol.env
    #depends_on:
    #  - kafka
    #  - mon
    logging:
      driver: "json-file"
      options:
        max-file: 5
        max-size: 10m
  grafana:
    image: grafana/grafana
    volumes:
      - ./grafana/dashboards-osm.yml:/etc/grafana/provisioning/dashboards/dashboards-osm.yml
      - ./grafana/osm-sample-dashboard.json:/etc/grafana/provisioning/dashboards/osm-sample-dashboard.json
      - ./grafana/osm-system-dashboard.json:/etc/grafana/provisioning/dashboards/osm-system-dashboard.json
      - ./grafana/datasource-prometheus.yml:/etc/grafana/provisioning/datasources/datasource-prometheus.yml
    hostname: grafana
    ports:
      - "${OSM_GRAFANA_PORTS:-3000:3000}"
    networks:
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "2"