暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

夜莺docker-compose现在100%可以启动成功了!

夜莺监控 2022-05-11
1151

夜莺5.0版本一开始就提供了docker-compose方式启动,一键就可以体验,真的非常方便,但是,理想很丰满,现实很骨干,docker-compose方式启动,经常会有部分容器失败,怎么个原理呢?


主要是因为MySQL的容器虽然启动了,但是容器内的MySQL进程启动太慢,导致依赖MySQL的其他容器启动失败,docker-compose配置文件中可以配置depends_on,来描述容器之间的依赖关系,但是无法解决这个问题,原因是容器确实按照顺序启动了,但是MySQL进程太慢。


这算是一个已知问题,迟迟没有功夫解决,前段时间社区有人提了issue,给了一个解决方案,issue #902 大家可以去围观下,还附了一篇博客,写的挺好的。


不过,博客里使用的方式使用nc命令做探测,夜莺默认使用的镜像中没有内置nc命令,后来去github找了一个小工具,ufoscout/docker-compose-wait 专门来解决这个问题,rust编写的,挺好用的。


具体解法:

1、首先打镜像的时候,顺便把wait工具打进去,大家可以看一下docker/Dockerfile文件,做了一些调整,包括n9e的镜像和ibex的镜像


2、修改docker-compose的配置文件,把依赖的组件写到环境变量里,在启动命令里先执行/wait,/wait完事了再执行具体的业务启动命令,比如nserver部分:

      nserver:
    image: ulric2019/nightingale:5.7.1
    container_name: nserver
    hostname: nserver
    restart: always
    environment:
    GIN_MODE: release
    TZ: Asia/Shanghai
    WAIT_HOSTS: mysql:3306, redis:6379
    volumes:
    - ./n9eetc:/app/etc
    ports:
    - "19000:19000"
    networks:
    - nightingale
    depends_on:
    - mysql
    - redis
    - prometheus
    - ibex
    links:
    - mysql:mysql
    - redis:redis
    - prometheus:prometheus
    - ibex:ibex
    command: >
    sh -c "/wait && app/n9e server"


    大家git pull一下夜莺的最新代码,进入docker目录,执行docker-compose up -d 就可以体验啦。注意,镜像是linux/amd64的,新版本的macbook如果是m1的芯片,还无法运行~


    文章转载自夜莺监控,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论