采用Docker Compose做编排,用于单机快速启动环境做测试,包含了MySQL、Redis、Prometheus、Ibex、Nightingale、Telegraf

    Github下载夜莺的源码,进入docker目录,执行docker-compose up -d即可,docker-compose会自动拉取镜像并启动,查看各个容器启动状态,使用命令docker-compose ps,都是Up状态则表示启动成功。

    如果ibex、nserver、nwebapi等模块一直在Restarting,可能是数据库容器启动太慢了没有准备好,可以执行docker-compose down停掉再重新尝试启动测试,这个问题受限于个人知识水平一直不知道如何解决,如果有对 docker-compose 机制熟悉的小伙伴可以赐教下,怎么保证各个容器的启动顺序,要求 MySQL 进程启动之后,其他的进程才启动。

    1. $ git clone https://github.com/didi/nightingale.git
    2. $ cd nightingale/docker
    3. $ docker-compose up -d
    4. Creating network "docker_nightingale" with driver "bridge"
    5. Creating mysql ... done
    6. Creating redis ... done
    7. Creating prometheus ... done
    8. Creating ibex ... done
    9. Creating agentd ... done
    10. Creating nwebapi ... done
    11. Creating nserver ... done
    12. Creating telegraf ... done
    13. $ docker-compose ps
    14. Name Command State Ports
    15. ----------------------------------------------------------------------------------------------------------------------------
    16. agentd /app/ibex agentd Up 10090/tcp, 20090/tcp
    17. ibex /app/ibex server Up 0.0.0.0:10090->10090/tcp, 0.0.0.0:20090->20090/tcp
    18. mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
    19. nserver /app/n9e server Up 18000/tcp, 0.0.0.0:19000->19000/tcp
    20. nwebapi /app/n9e webapi Up 0.0.0.0:18000->18000/tcp, 19000/tcp
    21. prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp
    22. redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
    23. telegraf /entrypoint.sh telegraf Up 0.0.0.0:8092->8092/udp, 0.0.0.0:8094->8094/tcp, 0.0.0.0:8125->8125/udp

    更多docker-compose相关知识请参考官网

    启动成功之后,建议把initsql目录下的内容挪走,这样下次重启的时候,DB就不会重新初始化了。否则下次启动mysql还是会自动执行initsql下面的sql文件导致DB重新初始化,页面上创建的规则、用户等都会丢失。

    docker-compose 这种部署方式,只是用于简单测试,不推荐在生产环境使用,当然了,如果您是 docker-compose 专家,另当别论。

    服务启动之后,浏览器访问nwebapi的端口,即18000,默认用户是root,密码是root.2020