必须用Docker而非pip或源码运行,因Redash依赖PostgreSQL、Redis、Celery worker、Node.js前端链路等多服务协同,官方未发布PyPI包,v8起弃用非Docker部署,v10+移除bootstrap脚本,手动部署易因版本错位失败且运维成本极高。

Docker 是目前在 Linux 上安装 Redash 最可靠、最省事的方式,其他方式(如源码编译或系统包安装)已基本被弃用或维护困难,强行走通成本远高于收益。
为什么必须用 Docker 而不是 pip 或源码直接运行
Redash 依赖 PostgreSQL、Redis、Celery worker、前端构建链路(Node.js + Webpack)、反向代理(Nginx)等多个服务协同工作。它的 Python 后端只是其中一环,pip install redash 根本不成立——官方从未发布 PyPI 包,也无 standalone 可执行体。
- 手动装 PostgreSQL 9.6+、Redis 6+、Node.js 16+、Python 3.9+,再配环境变量和启动顺序,极易因版本错位失败(比如
psycopg2编译失败、redis-py协议不兼容) - 官方自 v8 起已停止维护非 Docker 部署文档;v10+ 完全移除 bootstrap.sh 脚本
- 即使跑通,升级、备份、日志排查都得自己写脚本,而
docker-compose一条命令就能拉起整套环境
docker-compose 安装的 4 个关键动作
所有操作都在终端中完成,无需 root 权限(但需加入 docker 用户组):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 确保 Docker 和
docker-compose已就绪:docker --version和docker-compose --version均应返回有效版本(建议docker-compose≥ 2.10) - 克隆仓库并进入目录:
git clone https://github.com/getredash/redash.git && cd redash - 复制并编辑环境配置:
cp .env.example .env,重点改三处:REDASH_COOKIE_SECRET(随便填 32 字符随机串)、REDASH_DATABASE_URL(默认值通常可用)、REDASH_REDIS_URL(同上) - 初始化数据库并启动:
docker-compose run --rm server create_db→ 成功后执行docker-compose up -d
启动后打不开 http://localhost:5000 的常见原因
容器看似在运行,但页面空白或连接拒绝,大概率是以下其一:
-
docker ps查不到server容器:说明create_db失败或docker-compose up启动中途退出,看docker-compose logs server最顶几行错误,90% 是postgres容器没起来(检查docker-compose logs postgres是否报database system is shut down) - 能访问但登录页样式错乱:前端资源未构建,确认你没跳过
npm install && npm run build(仅当使用源码而非镜像时需要;若用redash/redash:latest镜像则跳过) - 防火墙拦截:Ubuntu 默认关着 ufw,CentOS 7+ 默认开 firewalld,执行
sudo firewall-cmd --add-port=5000/tcp --permanent && sudo firewall-cmd --reload
首次登录后必须立刻做的配置
Redash 启动后只是空壳,不连数据源就无法查任何表:
- 浏览器打开
http://localhost:5000,用邮箱注册第一个用户(会自动成为管理员) - 点击右上角头像 → Settings → Data Sources → New Data Source
- 选
PostgreSQL,Host 填postgres(不是localhost!Docker 内部网络用服务名),Port 填5432,Database 填redash,用户名/密码与.env中POSTGRES_USER/POSTGRES_PASSWORD一致 - 点 Test Connection 成功后再保存,否则后续所有查询都会报
Connection refused
注意:PostgreSQL 容器的数据默认存在临时卷里,重启宿主机后数据还在,但删掉容器就会丢。真要长期用,必须给 postgres 服务加 volumes 挂载宿主机路径——这点几乎所有人第一次都忽略,直到某天 docker-compose down && docker-compose up -d 后发现所有仪表板没了。

















