3 min read

Redash 的睿智脚本

事情是这样的,前几天登录上服务器,docker container 做常规版本更新,但是发现跑 docker compose pull && docker compose up -d 这个命令,docker 总是会去拉取 redash 相关的镜像,启动相应的实例。

顺便说一下我服务器里的情况。服务器里的服务全部都是用 docker compose 部署的,每个服务都有一个文件夹,文件夹里写了一个 docker-compose.yml 配置文件。正常情况下我只需要进入到某个项目文件夹运行一下命令,很快就能更新完成。

docker-compose 的默认行为是,如果没有 -f 参数,那么就会尝试在当前目录找到一个名叫 docker-compose.yml 的配置文件,但是现在行为变成了不管当前目录配置文件是写的什么。docker 只会去弄 redash 的东西。

我的确是在很久以前在服务器上部署过 Redash 试用了一下,但是没过多久就删掉停止运行了,按理说我现在的机器上并不存在 Redash 配置文件了(当时是这样以为的)。我运行 `docker compose config` 能看到 Redash 的 docker-compose 配置,但是没有办法定位到这个配置的文件路径,当时一度以为是 docker compose 出 bug 了,甚至打算重装整个 docker 环境。

晚上翻来复去睡不着,半夜突然想起,Redash 当时部署的时候,官方文档没有提供一个直接可用的 docker-compose.yml 配置文件,倒是提供了一个部署脚本。我当时就觉得,肯定是这个脚本下了什么毒,一看果然如此。

setup/setup.sh at cb47626b6823cbafac407b3e8991e97f53121f6e · getredash/setup
Setup scripts for Redash Cloud Images. Contribute to getredash/setup development by creating an account on GitHub.

这个睿智脚本想当然的觉得,一台机器就应该只部署一个 Redash 的 docker 实例,其他都不要部署了,直接设置了 COMPOSE_PROJECT_NAME 和 COMPOSE_FILE 环境变量。

隔了这么久我才发现这个问题,也是因为我服务器上一直用的 byobu 来做管理,只要机器不重启,或者不重开 byobu 那么新的 .profile 修改就不会应用。直到前几天......

碎碎念了这么多,这破事浪费了我挺多时间。写下来也是提醒提醒大家,运行网络上提供的脚本,最好是都大致浏览一下,脚本干了啥事。不然留点什么坑,之后好麻烦。