redash是一个非常优秀的BI工具,官方docker版一键安装的方式,省去了手动安装redash服务的依赖包、Celery、Redis、Postgres db等组件的麻烦。
但是因为我不太熟悉docker,在docker生命周期结束的时候,怎么把docker中的redash保存在docker中的postgres数据库中的数据进行持续化存储,这个问题难倒我了。
如果这个问题不解决,产品上线后一旦出问题,我估计会被公司开除。于是我想出了另外一个途径,即redash、celery、Redis等服务的部署使用官方的docker脚本,然后postgres数据库使用自己安装的数据库。
我通过慢慢摸索,成功实现了。我现在将整个过程分享出来,希望能帮到像我一样的朋友。大神请忽略。
另外官方教程的逻辑有一点混乱。
Centos7/Mac OS 10.15.3
见官方文档
https://docs.docker.com/engine/install/
其中Mac系统很简单,直接(https://hub.docker.com/editions/community/docker-ce-desktop-mac/)下载桌面版(好像500多M),然后直接图形界面安装,docker-compose工具就自带了。
Centos版照着官方教程操作,也很简单,我就不说了。
https://nodejs.org/en/download/
尽量选择二进制包。对Linux和node不是很熟的朋友,尽量避免源码安装哈,因为很容易踩了一些坑。
postgres数据库具体怎么安装,自行上网查资料。
安装好后,创建一个数据库,比如数据库名字是 “redash_v8”,留着后面用
git clone https://github.com/getredash/redash.git
注意,下载下来的默认是master分支,也就是最新的redash(当前是V9),生产还是使用稳定版的V8版本好一些。通过下面的指令,可以切换到v8版本
cd redash
git checkout --track remotes/origin/release/8.0.x
docker-compose.yml文件就在 redash目录下面
1.删除postgres相关的指令,
2.修改 REDASH_DATABASE_URL: “postgresql://postgres@postgres/postgres”
REDASH_DATABASE_URL: “postgresql://UserName:PassWorld@Host:Port/DataBaseName”
UserName:你自己安装部署的postgres数据库的用户名
PassWorld:你自己安装部署的postgres数据库的密码
Host:你自己安装部署的postgres数据库所在服务器的IP地址
Port:你自己安装部署的postgres数据库开放的端口号(如果pg数据库和redash不在同一服务器,记得防火墙开放改端口)
DataBaseName:你新建的数据库名字,比如已经创建的 “redash_v8”
在redash目录下面分别执行下面指令
npm install # 可能要花费一点时间
npm run build
docker-compose run --rm server create_db
docker-compose up # 可能要花费一点时间
# 如果想后台的方式启动,则用下面的指令
docker-compose up -d
# 如果需要终止redash以及相关服务,则执行下面指令
docker-compose stop
在浏览器输入部署服务的IP和端口,正常应该就能访问redash了。
这样避免安装各种依赖主件的麻烦
redash非常好用,但是一般直接拿来使用,肯定会有一些不太适合自己公司场景的地方,所以必然要对redash进行二次开发;如果有其他朋友公司也在使用redash,欢迎大家一起多多交流,分享一下经验。