DEV Community

Discussion on: 😡 Agonies, Despair and self hosted Redash BI server on Microsoft Azure cloud platform 😋 part 2

 
reconnect profile image
Reconnect

sending the file again - made a change in - # redash worker 1 - scheduled_worker: - QUEUES: "schemas,scheduled_queries". As it was giving duplicate key error. but the same errors are still there.

Azure App Services docker-compose.yml Version

version: "3.9"

x-environment: &base_environment
    PYTHONUNBUFFERED: 0
    REDASH_WEB_WORKERS: 4
    REDASH_LOG_LEVEL: "INFO"
    REDASH_RATELIMIT_ENABLED: "false"
    REDASH_REDIS_URL: "redis://redis_server:6379/0"
    REDASH_MAIL_DEFAULT_SENDER: "redash@example.com"
    REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
    # do not forget to update this key
    REDASH_DATABASE_URL: "postgresql://<your-admin-username>@<your-managed-server-name>:<your-password>@<your-host>:5432/redash?sslmode=require"

x-base_redash: &base_redash
    environment:
        <<: *base_environment
    image: redash/redash:8.0.2.b37747
    restart: always

services:
    # redis
    redis_server:
        image: redis:alpine
        container_name: redis_server_local
        restart: unless-stopped

    # redash server
    server:
        <<: *base_redash
        command: server
        ports:
        - "5000:5000"
        - "5678:5678"
        depends_on:
        - redis_server

    # redash scheduler
    scheduler:
        <<: *base_redash
        command: scheduler
        depends_on:
        - server
        environment:
        << : *base_environment
        QUEUES: "celery"
        WORKERS_COUNT: 1

    # redash worker 1
    scheduled_worker:
        <<: *base_redash
        command: worker
        depends_on:
        - server
        environment:
        << : *base_environment
        QUEUES: "schemas,scheduled_queries"
        WORKERS_COUNT: 1

    # redash worker 2
    adhoc_worker:
        <<: *base_redash
        command: worker
        depends_on:
        - server
        environment:
        << : *base_environment
        QUEUES: "queries"
        WORKERS_COUNT: 2

    # nginx
    nginx:
        image: redash/nginx:latest
        ports:
        - "8080:80"
        depends_on:
        - server
        links:
        - server:redash
        restart: always
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
alxizr profile image
alxizr • Edited

something is wrong with the YML file. The indentations are all wrong. You need to remember that the YML format is very sensitive to the the indentations! It takes to space characters (white space) for the indent. As far as i can see, your main issue is with the indentations.

Thread Thread
 
alxizr profile image
alxizr

Everything under this line: x-environment: &base_environment should have a single indent and not double indent

Thread Thread
 
alxizr profile image
alxizr • Edited

for the # redash scheduler service pay attention to the environment key. QUEUES and WORKERS_COUNT are keys of the environment but because of the wrong indents it looks like they are part of the YML file

scheduler:
  <<: *base_redash
  command: scheduler
  depends_on:
    - server
  environment:
    << : *base_environment
    QUEUES: "celery"
    WORKERS_COUNT: 1

Thread Thread
 
alxizr profile image
alxizr • Edited

for the # redash server service pay attention that all the values are set as keys. Under the key ports the - character should be indented.

  server:
    <<: *base_redash
    command: server
    ports:
      - "5000:5000"
      - "5678:5678"
    depends_on:
      - redis_server

Thread Thread
 
alxizr profile image
alxizr • Edited

for the # redash worker 1 & 2 services it is all the same as the # redash scheduler service. Pay attention to all the keys

Thread Thread
 
alxizr profile image
alxizr

for the # nginx service your keys are: image, ports, depends_on, links and restart, everything under each line suppose to be the value, so we need to indent it as well.

  nginx:
    image: redash/nginx:latest
    ports:
      - "8080:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always

Thread Thread
 
alxizr profile image
alxizr • Edited

yamllint.com/

This is a tool i often use when I need to write a long and complex YML file. I talked about it in my article about YML. There is a link in the first part of this series.

Just copy and paste your YML file content inside this tool's the editor and validate it. In case something is wrong, you will get a notification error.

Thread Thread
 
reconnect profile image
Reconnect

HI, Thanks for helping and suggesting the chnages in the yml file. Made the changes and checked with yamllint.com and validated. But still getting the following error:
ERROR - Exception in multi-container config parsing: Exception: System.NullReferenceException, Msg: Object reference not set to an instance ERROR - Start multi-container app failed.

Do you think there is an alternate approach to deploy using azure ACI: docker.com/blog/how-to-deploy-cont...

Following is the yml file:

docker-compose.yml

version: "3.9"

x-environment: &base_environment
PYTHONUNBUFFERED: 0
REDASH_WEB_WORKERS: 4
REDASH_LOG_LEVEL: "INFO"
REDASH_RATELIMIT_ENABLED: "false"
REDASH_REDIS_URL: "redis://redis_server:6379/0"
REDASH_MAIL_DEFAULT_SENDER: "redash@example.com"
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.python"
REDASH_DATABASE_URL: "MY URL"

x-base_redash: &base_redash
environment:
<<: *base_environment
image: redash/redash:8.0.2.b37747
restart: always

services:
# redis
redis_server:
image: redis:alpine
container_name: redis_server_local
restart: unless-stopped

# redash server
server:
<<: *base_redash
command: server
ports:
- "5000:5000"
- "5678:5678"
depends_on:
- redis_server

# redash scheduler
scheduler:
<<: *base_redash
command: scheduler
depends_on:
- server
environment:
<<: *base_environment
QUEUES: "celery"
WORKERS_COUNT: 1

# redash worker 1
scheduled_worker:
<<: *base_redash
command: worker
depends_on:
- server
environment:
<<: *base_environment
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1

# redash worker 2
adhoc_worker:
<<: *base_redash
command: worker
depends_on:
- server
environment:
<<: *base_environment
QUEUES: "queries"
WORKERS_COUNT: 2

# nginx - pay attention to the image name
nginx:
image: redash/nginx:latest
ports:
- "8080:80"
depends_on:
- server
links:
- server:redash
restart: always

Thread Thread
 
alxizr profile image
alxizr

regarding the ACI it can be a possible solution but I am not sure because i never tried it with the Redash. My experience with it was that when I did create containers with ACI, all of them should be on the same network so they could communicate.

Thread Thread
 
alxizr profile image
alxizr • Edited

regarding the error, I can not understand where it comes from, so what I will suggest is you isolate every service in the YML file and see when it occurs. You have 6 services and once you find the service that causing the error then we would be able to solve it hopefully

Thread Thread
 
reconnect profile image
Reconnect

hi, we were able to deploy using a single VM node and its working. We got a domain tied to it. After getting the cert for my domain, everything works except have issue with one the web route not working. If you know something about it and can provide some advise and help.

my-website.com doesn't work.

Whereas rest of the following 3 web routes works fine:
my-website.com
my-website.com
my-website.com