Docker Redash搭建

准备docker-compose.yml

version: '2'
services:
  server:
    image: redash/redash:8.0.2.b37747
    command: server
    depends_on:
      - postgres
      - redis
    ports:
      - "5000:5000"
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: "suibianxieyige"
      REDASH_WEB_WORKERS: 4
      REDASH_MAIL_SERVER: "smtp.exmail.qq.com"
      REDASH_MAIL_PORT: 465
      REDASH_MAIL_USE_TLS: "true"
      REDASH_MAIL_USE_SSL: "true"
      REDASH_MAIL_USERNAME: "xxx@xx.com"
      REDASH_MAIL_PASSWORD: "xxx"
      REDASH_MAIL_DEFAULT_SENDER: "xxx@xx.com"
      REDASH_HOST: "http://xxx.com"
      REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
    restart: always
  worker:
    image: redash/redash:8.0.2.b37747
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: "xxx"
      REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
    restart: always
  redis:
    image: redis:3.0-alpine
    ports:
     - "6379:6379"
    volumes: 
      - ./data/redis_data:/data
    restart: always
  postgres:
    image: postgres:9.5.6-alpine
    ports:
     - "5432:5432"
    volumes:
      - ./data/postgresql_data:/var/lib/postgresql/data
    restart: always

初始化数据库

docker-compose run --rm server create_db

启动服务

docker-compose up -d

Nginx代理

upstream rd_server {
    server  172.28.51.191:5000;
}


server{
    listen 80;
    # 此域名是提供给最终用户的访问地址
    server_name xxx.com;
    access_log /var/log/nginx/rd.access.log;
    gzip on;
    gzip_types *;
    gzip_proxied any;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://rd_server/;
    }
}

可能会用到,解决邮件发送失败

遇到的问题:

直接测试邮件发送可以收到

docker exec -it redash-server-1 python manage.py send_test_mail xxx@xxx.com

但是在页面上点击忘记密码,却收不到邮件。查看日志是redash-worker里面报错。

参考:https://github.com/getredash/redash/issues/5266

亲测有效解决方案如下

  1. 创建一个evn文件,把server下的environment复制出来并改成properties类型,如下
vim /opt/redash/env
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
REDASH_DATABASE_URL=postgresql://postgres@postgres/postgres
REDASH_COOKIE_SECRET=redash
REDASH_WEB_WORKERS=4
# 邮件配置
REDASH_MAIL_SERVER=smtp.xxx.com
REDASH_MAIL_PORT=587
REDASH_MAIL_USE_TLS=true
REDASH_MAIL_USE_SSL=false
REDASH_MAIL_USERNAME=xxx@xxx.com
REDASH_MAIL_PASSWORD=xxx
REDASH_MAIL_DEFAULT_SENDER=xxx@xxx.com
REDASH_HOST=https://xxx.com
  1. 然后在docker-compose.yml里加上引用,在redash-woker下添加: env_file: /opt/redash/env,请参考
...
  worker:
    image: redash/redash:8.0.2.b37747
    command: scheduler
    environment:
      PYTHONUNBUFFERED: 0
      REDASH_LOG_LEVEL: "INFO"
      REDASH_REDIS_URL: "redis://redis:6379/0"
      REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
      REDASH_COOKIE_SECRET: "xxx"
      REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
      QUEUES: "queries,scheduled_queries,celery"
      WORKERS_COUNT: 2
    env_file: /opt/redash/env  # 这里是新添加的,宿主机上的绝对路径
    restart: always
  ...
posted @ 2023-12-27 20:43  六月瓜  阅读(9)  评论(0编辑  收藏  举报