一、简介

根据 grafana 源码中开发文档说明 grafana-main\contribute\developer-guide.md,源码中developer-guide.md 文件说明,按照开发文档生成镜像,前端打包一直失败,虚拟机性能不行,经常就 100%。参考 grafana 的 Dockerfile,简化了一些步骤,最终成功

使用官网提供的 命令失败,首先你需要保证你的源代码能正常运行,源代码运行可以参考我另一篇博客https://blog.csdn/qq_41538097/article/details/120956231,这是window 的,Linux运行源码相比window更简单,直接参考 developer-guide.md 文件即可

二、打包前端

在Linux虚拟机上打包

yarn build

打包成功

如果报内存溢出,FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed,配置 node 允许的最大内存量可以解决,vim /etc/profile,在文件最后追加 export NODE_OPTIONS=--max_old_space_size=5120,大小自行设置,source /etc/frofile 刷新环境变量

三、编译后端

make run 命令,make run编译之后,版本不同 grafana-server 生成的目录可能不同可以在当前项目的 bin/ 或 bin/Linux-amd64/ 目录下查看

四、复制必要的环境

将 bin 、conf、public、data 目录复制到 grafana_diy 目录下(非必须,只是制作 grafana镜像只需要以下文件,data 在项目第一次启动时自动生成的目录)

五、创建dockerfile

新建 dockerfile 文件, 和 bin、conf、data、public 同级(非必要,build 时可以指定路径)

看了一点 go 语言基础,发现go语言打包编译后和语言无关(不像 java,node语言),所以使用的基础镜像是 centos,无需在配置其他环境

下面命令比较简单,就是将 bin 、data、conf、public 目录复制到容器内部的 /usr/grafana/ 目录,暴露3001端口,启动 grafana-server

FROM centos
WORKDIR /usr/grafana/
COPY bin /usr/grafana/bin/
COPY data /usr/grafana/data/
COPY conf /usr/grafana/conf/
COPY public /usr/grafana/public/
EXPOSE 3001
ENTRYPOINT ["/usr/grafana/bin/grafana-server"]

六、制作镜像

docker build -f dockerfile -t grafana:1.0.0 .

grafana:1.0.0 镜像制作成功

七、启动容器

启动命令,挂载了 grafana 的配置文件目录以及数据目录,我的 conf/ 目录下的 custom.ini 修改了端口号为 3001,并且将grafana 存储数据的默认数据库 sqlite3 改为 MySQL,具体配置请看我上一篇博客

docker run -d --name grafana_diy -p 3000:3001 -v /root/project/grafana_diy/conf:/usr/grafana/conf -v /root/project/grafana_diy/data:/usr/grafana/data grafana:1.0.0

grafana 容器启动成功

八、访问测试

九、指定配置文件启动

进入 conf/ 目录,cp custom.ini test.ini,进入test.ini 修改端口号为8888,启动容器使用 --config 指定配置文件,更多参数可参考 grafana 官网

docker run -d --name grafana_diy_test -p 3001:8888 -v /root/project/grafana_diy/conf:/usr/grafana/conf -v /root/project/grafana_diy/data:/usr/grafana/data grafana:1.0.0 --config=/usr/grafana/conf/test.ini

可以看到指定配置文件启动成功

可以正常访问

更多推荐

grafana 源码制作镜像