Kibana Docker CI/CD 项目文件与调用流程
[Jenkins] .pipeline.yml
│ (定义 pipeline 阶段和触发条件)
↓
[Jenkins] Jenkinsfile
│ (执行 shell 命令和步骤)
↓
[Jenkins] Makefile
│ (规范构建、推送命令,间接调用 Dockerfile 和 entrypoint.sh)
├─[Docker] Dockerfile
│ │ (定义基础镜像、COPY文件、ENTRYPOINT,打包所有 docker 运行所需内容)
│ ├─ 复制 dashboards/.ndjson # 仪表盘 json,Kibana 导入用
│ ├─ 复制 entrypoint.sh # 容器启动时调用的脚本
│ ├─ 复制 config/kibana.yml # Kibana 配置文件
│ └─ 设定 ENTRYPOINT 为 entrypoint.sh
│
├─[Kibana] scripts/export_dashboards.sh
│ (从正在运行的 Kibana 导出 dashboard 到 dashboards/.ndjson)
│
├─[Kibana] scripts/kibana_v2_export_commit.sh
│ (自动将最新 .ndjson 文件提交到 git 以实现版本管理)
│
↓
[版本] VERSION
(手动或自动更新,跟踪当前镜像/代码版本,CI 构建校验一致性)
镜像发布与运行时(用户视角)
开发/测试/部署端:
-
git push(commit 或 tag)到主仓库
│
├─ Jenkins 触发 pipeline,进入构建流程
│
├─ Makefile 调用 docker build,基于 Dockerfile 构建镜像
│ ├─ 镜像内包含 dashboards/ 及 entrypoint.sh
│ └─ 镜像 tag: registry/xxx/kibana:xxx
│
├─ tag 提交:make prod-push,镜像推送到 registry
└─ 普通提交:只保存镜像 .tar.gz 到 QA 目录 -
目标主机/测试机:
├─ docker pull registry/xxx/kibana:TAG
├─ docker run -d ... (镜像)
│
└─ 镜像启动(执行 entrypoint.sh)流程:
├─ 动态设置 kibana.yml
├─ 后台启动 Kibana
├─ 循环等待 /api/status 可用
├─ curl POST 导入 dashboards/latest.ndjson
└─ wait $KIBANA_PID,容器前台挂载 kibana 主进程
文件类别与作用分组
[Jenkins] CI/CD 配置相关
.pipeline.yml:CI 入口,定义所有构建和发布步骤
Jenkinsfile:具体命令和参数执行
Makefile:约定 prod/prod-push 逻辑,调用 docker 命令
[Docker] 镜像构建相关
Dockerfile:决定基础镜像、文件结构、最终 ENTRYPOINT
entrypoint.sh:容器内自启动脚本,串联 kibana、导入等步骤
[Kibana] 仪表盘导出与集成
scripts/export_dashboards.sh:Kibana 运行态下导出仪表盘
scripts/kibana_v2_export_commit.sh:自动 git add/commit/push 导出的 .ndjson
dashboards/*.ndjson:所有版本的导出仪表盘(重点是 latest.ndjson)
[Version] 版本号
VERSION:人类可读的版本标识,CI 校验和文档溯源用
总结
开发/导出:通过脚本自动导出仪表盘,commit 到 git。
构建:CI 调用 Makefile/Dockerfile/entrypoint.sh,把仪表盘和脚本都打包进镜像。
发布:打 tag 时 Jenkins 自动推送镜像到仓库。
运行:docker pull/run 时 entrypoint.sh 自动初始化、导入 dashboard,保持 Kibana 正常运行。
| 文件/目录 | 归属/类型 | 作用说明 |
|---|---|---|
.pipeline.yml |
Jenkins | CI 流程定义入口,指定构建/发布的阶段和触发条件 |
Jenkinsfile |
Jenkins | 具体 Jenkins 流水线执行脚本,调用 Makefile |
Makefile |
Jenkins | 统一构建/推送规则,便于本地和 CI 共用 |
Dockerfile |
Docker | 镜像构建规范,定义基础镜像、COPY 文件、ENTRYPOINT |
entrypoint.sh |
Docker | 容器启动后自启动脚本,串联启动 Kibana+导入仪表盘 |
dashboards/*.ndjson |
Kibana | 导出的仪表盘文件,供 Docker 镜像自动导入 |
config/kibana.yml |
Kibana | Kibana 配置文件(如需自定义覆盖) |
scripts/export_dashboards.sh |
Kibana | 自动导出当前 Kibana 仪表盘为 ndjson 文件 |
scripts/kibana_v2_export_commit.sh |
Kibana | 将最新 ndjson 提交到 git,便于版本管理 |
VERSION |
通用 | 当前版本号,CI 校验用 |
工作流顺序(推荐流程)
- 开发与导出仪表盘
使用 export_dashboards.sh 从 Kibana 导出 dashboard,生成/更新 dashboards/latest.ndjson
使用 kibana_v2_export_commit.sh 自动提交并 push 仪表盘 ndjson 文件到 Git
- 本地或 CI 构建镜像
通过 Jenkins (.pipeline.yml + Jenkinsfile) 自动拉取最新代码并执行:
make prod:本地 build 镜像(用 Dockerfile)
将 dashboards/、entrypoint.sh、config/kibana.yml 都 COPY 进镜像
Tag 提交时执行 make prod-push,将镜像推送至远端 registry
- 镜像拉取与部署
运维或开发通过 docker pull registry/xxx/kibana:TAG 拉取镜像
启动容器:
sh
Copy
Edit
docker run -d --name kibana-v2-test -p 5606:5601 registry/xxx/kibana:TAG
容器内启动自动执行 entrypoint.sh,实现:
动态替换 publicBaseUrl
后台启动 Kibana 服务
循环检测 /api/status,直到 Kibana ready
自动导入 dashboards/latest.ndjson
wait $KIBANA_PID,保持容器长期运行
分类汇总(建议保存/团队说明用)
Jenkins 相关文件:.pipeline.yml、Jenkinsfile、Makefile
Docker 相关文件:Dockerfile、entrypoint.sh
Kibana 相关文件:dashboards/*.ndjson、config/kibana.yml、scripts/export_dashboards.sh、scripts/kibana_v2_export_commit.sh
版本文件:VERSION
浙公网安备 33010602011771号