blob: 0204f4aaa8a45bf8973add71fabdd660a1b5870e [file] [log] [blame]
# Copyright 2017-present Open Networking Foundation
#
# 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'
services:
#
# Single-node zookeeper service
#
zookeeper:
image: "${REGISTRY}wurstmeister/zookeeper:latest"
ports:
- 2181
environment:
SERVICE_2181_NAME: "zookeeper"
#
# Single-node kafka service
#
kafka:
image: "${REGISTRY}wurstmeister/kafka:latest"
ports:
- 9092
environment:
KAFKA_ADVERTISED_HOST_NAME: ${DOCKER_HOST_IP}
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
SERVICE_9092_NAME: "kafka"
depends_on:
- vconsul
volumes:
- /var/run/docker.sock:/var/run/docker.sock
#
# Single-node consul agent
#
vconsul:
image: "${REGISTRY}consul:0.9.2"
command: agent -server -bootstrap -client 0.0.0.0 -ui
ports:
- "8300:8300"
- "8400:8400"
- "8500:8500"
- "8600:8600/udp"
environment:
#SERVICE_53_IGNORE: "yes"
SERVICE_8300_IGNORE: "yes"
SERVICE_8400_IGNORE: "yes"
SERVICE_8500_NAME: "consul-rest"
#
# Single-node etcd server
#
etcd:
image: "quay.io/coreos/etcd:v3.2.9"
command: [
"etcd",
"--name=etcd0",
"--advertise-client-urls=http://${DOCKER_HOST_IP}:2379,http://${DOCKER_HOST_IP}:4001",
"--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001",
"--initial-advertise-peer-urls=http://${DOCKER_HOST_IP}:2380",
"--listen-peer-urls=http://0.0.0.0:2380",
"--initial-cluster-token=etcd-cluster-1",
"--initial-cluster=etcd0=http://${DOCKER_HOST_IP}:2380",
"--initial-cluster-state=new"
]
ports:
- "2379:2379"
- 2380
- 4001
#
# Registrator
#
registrator:
image: "${REGISTRY}gliderlabs/registrator:latest"
command: [
"-ip=${DOCKER_HOST_IP}",
"-retry-attempts", "100",
"-cleanup",
# "-internal",
"consul://vconsul:8500"
]
links:
- vconsul
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
#
# Fluentd log server
#
fluentd:
image: "${REGISTRY}fluent/fluentd:v0.12.42"
ports:
- "24224:24224"
volumes:
- "/tmp/fluentd:/fluentd/log"
environment:
SERVICE_24224_NAME: "fluentd-intake"
#
# Graphite-Grafana-statsd service instance
# (demo place-holder for external KPI system)
#
grafana:
image: "${REGISTRY}${REPOSITORY}voltha-grafana${TAG}"
ports:
- "8883:80"
- "2003:2003"
- "2004:2004"
- "8126:8126"
- "8125:8125/udp"
environment:
SERVICE_80_NAME: "grafana-web-ui"
SERVICE_2003_NAME: "carbon-plain-text-intake"
SERVICE_2004_NAME: "carbon-pickle-intake"
SERVICE_8126_NAME: "statsd-tcp-intake"
SERVICE_8125_NAME: "statsd-udp-intake"
GR_SERVER_ROOT_URL: "http://localhost:80/grafana/"
#
# Shovel (Kafka-graphite-gateway)
#
shovel:
image: "${REGISTRY}${REPOSITORY}voltha-shovel${TAG}"
command: [
"/shovel/shovel/main.py",
"--kafka=@kafka",
"--consul=${DOCKER_HOST_IP}:8500",
"--topic=voltha.kpis",
"--host=${DOCKER_HOST_IP}"
]
depends_on:
- vconsul
- kafka
- grafana
restart: unless-stopped
#
# Voltha server instance(s)
#
voltha:
image: "${REGISTRY}${REPOSITORY}voltha-voltha${TAG}"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
command: [
"/voltha/voltha/main.py",
"-v",
"--consul=${DOCKER_HOST_IP}:8500",
"--etcd=${DOCKER_HOST_IP}:2379",
"--rest-port=8880",
"--grpc-port=50556",
"--kafka=@kafka",
"--instance-id-is-container-name",
"--interface=eth1",
"--backend=etcd",
"-v"
]
ports:
- 8880
- 50556
- 18880
- "60001:60001"
depends_on:
- vconsul
- etcd
links:
- vconsul
- etcd
environment:
SERVICE_8880_NAME: "voltha-health"
SERVICE_8880_CHECK_HTTP: "/health"
SERVICE_8880_CHECK_INTERVAL: "5s"
SERVICE_8880_CHECK_TIMEOUT: "1s"
SERVICE_18880_NAME: "voltha-sim-rest"
SERVICE_HOST_IP: "${DOCKER_HOST_IP}"
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
networks:
- default
- ponmgmt
envoy:
image: "${REGISTRY}${REPOSITORY}voltha-envoy${TAG}"
entrypoint:
- /usr/local/bin/envoyd
- -envoy-cfg-template
- "/envoy/voltha-grpc-proxy.template.json"
- -envoy-config
- "/envoy/voltha-grpc-proxy.json"
- -kv
- "etcd"
- -kv-svc-name
- "etcd"
- -kv-port
- "2379"
ports:
- "50555:50555"
- "8882:8882"
- "8443:8443"
- "8001:8001"
environment:
SERVICE_50555_NAME: "voltha-grpc"
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
networks:
- default
- ponmgmt
links:
- voltha:vcore
#
# Voltha cli container
#
cli:
image: "${REGISTRY}${REPOSITORY}voltha-cli${TAG}"
command: [
"/cli/cli/setup.sh",
"-L",
"-G"
]
environment:
DOCKER_HOST_IP: "${DOCKER_HOST_IP}"
ports:
- "5022:22"
depends_on:
- voltha
#############################################
# Item below this line will soon be removed.#
#############################################
#
# ofagent server instance
#
ofagent:
image: "${REGISTRY}${REPOSITORY}voltha-ofagent${TAG}"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
command: [
"/ofagent/ofagent/main.py",
"-v",
"--consul=${DOCKER_HOST_IP}:8500",
"--controller=${DOCKER_HOST_IP}:6653",
"--grpc-endpoint=@voltha-grpc",
"--instance-id-is-container-name",
"--enable-tls",
"--key-file=/ofagent/pki/voltha.key",
"--cert-file=/ofagent/pki/voltha.crt",
"-v"
]
depends_on:
- vconsul
- voltha
links:
- vconsul
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
restart: unless-stopped
#
# Netconf server instance(s)
#
netconf:
image: "${REGISTRY}${REPOSITORY}voltha-netconf${TAG}"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
privileged: true
command: [
"/netconf/netconf/main.py",
"-v",
"--consul=${DOCKER_HOST_IP}:8500",
"--grpc-endpoint=@voltha-grpc",
"--instance-id-is-container-name",
"-v"
]
ports:
- "830:1830"
depends_on:
- vconsul
- voltha
links:
- vconsul
environment:
SERVICE_1830_NAME: "netconf-server"
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
#
# Dashboard daemon
#
dashd:
image: "${REGISTRY}${REPOSITORY}voltha-dashd${TAG}"
command: [
"/dashd/dashd/main.py",
"--kafka=@kafka",
"--consul=${DOCKER_HOST_IP}:8500",
"--grafana_url=http://admin:admin@${DOCKER_HOST_IP}:8883/api",
"--topic=voltha.kpis",
"--docker_host=${DOCKER_HOST_IP}"
]
depends_on:
- vconsul
- kafka
- grafana
restart: unless-stopped
#
# Nginx service consolidation
#
nginx:
image: "${REGISTRY}${REPOSITORY}voltha-nginx${TAG}"
ports:
- "80:80"
environment:
CONSUL_ADDR: "${DOCKER_HOST_IP}:8500"
command: [
"/nginx_config/start_service.sh"
]
depends_on:
- vconsul
- grafana
- portainer
restart: unless-stopped
#
# Docker ui
#
portainer:
image: "${REGISTRY}${REPOSITORY}voltha-portainer${TAG}"
ports:
- "9000:9000"
environment:
CONSUL_ADDR: "${DOCKER_HOST_IP}:8500"
restart: unless-stopped
entrypoint: ["/portainer", "--logo", "/docker/images/logo_alt.png"]
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
networks:
default:
driver: bridge
ponmgmt:
driver: bridge
driver_opts:
com.docker.network.bridge.name: "ponmgmt"