
我这个问题里刻意提到“夜莺”关键字没有使用 Nightingale因为我的 Knowledge 里就是用的“夜莺”另外我刻意要求 AI 告诉我有哪些注意事项因为我担心有坑。AI 的回答真的挺惊艳的而且这是普通的 DeepSeek V4并非顶级模型截图如下不骗大家。详细回答如下。用 Docker Compose 部署夜莺监控一、快速开始夜莺提供了开箱即用的 Docker Compose 配置文件位于源码仓库的docker/compose-bridge/目录下。1. 克隆仓库并启动git clone https://gitlink.org.cn/ccfos/nightingale.git cd nightingale/docker/compose-bridge docker compose up -d国内网络 Docker Hub 拉取镜像可能很慢可使用镜像加速器或从m.daocloud.io代理拉取。备注上面给的 gitlink 的地址是国内 git repo 地址建议优先使用 github.com/ccfos/nightingale 这个 github 的地址gitlink 会稍微滞后一些发布 releases 的时候是在 github 发布。2. 启动后你会得到 5 个容器容器镜像用途端口mysqlmysql:8关系型数据库存用户、告警规则、仪表盘等3306redisredis:6.2缓存存 JWT token、心跳元信息6379victoriametricsvictoriametrics/victoria-metrics:v1.79.12时序数据库兼容 Prometheus性能更好8428nightingaleflashcatcloud/nightingale:latest夜莺核心服务17000, 20090categrafflashcatcloud/categraf:latest数据采集器采集 CPU/内存/磁盘等—3. 登录浏览器访问http://服务器IP:17000默认用户名root默认密码root.2020。二、当前 docker-compose.yaml 完整内容networks: nightingale: driver: bridge services: mysql: image: mysql:8 container_name: mysql hostname: mysql restart: always environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 1234 volumes: - ./mysqldata:/var/lib/mysql/ - ../initsql:/docker-entrypoint-initdb.d/ - ./etc-mysql/my.cnf:/etc/my.cnf networks: - nightingale ports: - 3306:3306 redis: image: redis:6.2 container_name: redis hostname: redis restart: always environment: TZ: Asia/Shanghai networks: - nightingale ports: - 6379:6379 victoriametrics: image: victoriametrics/victoria-metrics:v1.79.12 container_name: victoriametrics hostname: victoriametrics restart: always environment: TZ: Asia/Shanghai ports: - 8428:8428 networks: - nightingale command: - --loggerTimezoneAsia/Shanghai nightingale: image: flashcatcloud/nightingale:latest container_name: nightingale hostname: nightingale restart: always environment: GIN_MODE: release TZ: Asia/Shanghai WAIT_HOSTS: mysql:3306, redis:6379 volumes: - ./etc-nightingale:/app/etc networks: - nightingale ports: - 17000:17000 - 20090:20090 depends_on: - mysql - redis - victoriametrics command: - /app/n9e categraf: image: flashcatcloud/categraf:latest container_name: categraf hostname: categraf01 restart: always environment: TZ: Asia/Shanghai HOST_PROC: /hostfs/proc HOST_SYS: /hostfs/sys HOST_MOUNT_PREFIX: /hostfs WAIT_HOSTS: nightingale:17000, nightingale:20090 volumes: - ./etc-categraf:/etc/categraf/conf - /:/hostfs networks: - nightingale depends_on: - nightingale三、重要注意事项 ⚠️1. 仅适合测试不建议直接上生产官方文档明确指出Docker Compose 方式仅用于快速测试不推荐在生产环境使用。如果要在生产环境使用需要对 Docker Compose 有深入理解Volume 持久化、网络、升级策略等。生产环境推荐二进制部署 systemd 托管开机自启、挂了自动拉起、日志滚动、升级方便。2. 数据持久化MySQL 数据挂载到./mysqldata务必保证此目录不随容器删除而丢失。VictoriaMetrics 默认没有挂载数据卷——容器删除后时序数据全部丢失如果需要持久化应添加 volume 挂载- ./vmdata:/victoria-metrics-data并添加-retentionPeriod90d参数。Redis也无持久化配置重启即丢失 JWT token用户需重新登录和心跳元信息。3. MySQL 初始化容器首次启动时../initsql目录下的 SQL 文件会自动导入创建夜莺所需的数据库表结构。这是通过 MySQL 镜像的/docker-entrypoint-initdb.d/机制完成的只在数据库首次创建时执行。4. 密码安全MySQL root 密码默认是1234生产环境务必修改MYSQL_ROOT_PASSWORD并同步修改etc-nightingale/config.toml中的 DSN 连接串。夜莺 Web 默认密码root.2020登录后立即修改。5. 集群模式如果要部署多个n9e实例组成集群不能用默认的 Docker Compose。需要修改etc-nightingale/config.toml让所有 n9e 实例指向同一套外部的 MySQL 和 Redis。6. 边缘模式不支持 Docker边缘机房需要的n9e-edge进程社区目前没有提供 Docker 镜像边缘模式只能用二进制方式部署。7. 可选替代PostgreSQL host 网络模式仓库还提供了另外两种 Compose 变体compose-postgres/用 PostgreSQL 替代 MySQLcompose-host-network/使用network_mode: host避免 bridge 网络的端口映射开销适合单机高性能场景8. 版本选择仓库中有 V5nightingale/docker/和 V9nightingale/docker/compose-bridge/两套 Compose。V5 的架构是 nserver nwebapi 分离模式V9 已合并为单一nightingale容器。建议使用 V9文档路径为docker/compose-bridge/。9. Categraf 采集器注意Categraf 挂载了宿主机根目录/: /hostfs来读取/proc、/sys等系统指标。如果宿主机也是 Mac比如你当前环境是 macOSDocker 容器内的/hostfs/proc实际是 Linux VM 的 proc采集到的 CPU/内存是 Docker Desktop 虚拟机的指标不是 macOS 宿主机的。四、总结场景推荐方案快速体验/演示docker compose up -d5 分钟搞定生产环境二进制部署 systemd 托管K8s 环境Helm 部署需要边缘告警中心端 Docker Compose 边缘二进制 n9e-edge