superset icon indicating copy to clipboard operation
superset copied to clipboard

Superset can't access non-development environments

Open kainchow opened this issue 1 year ago • 3 comments

Bug description

When I use docker compose -f docker-compose-non-dev.yml up to start superset, it enters the development environment, and using docker compose up also enters the development environment, not the production environment.

How to reproduce the bug

  1. git clone https://github.com/apache/superset.git
  2. Go to the superset directory
  3. Execute the command: docker compose -f docker-compose-non-dev.yml up

Screenshots/recordings

111

Superset version

master / latest-dev

Python version

3.9

Node version

16

Browser

Chrome

Additional context

Without making any project modifications, the command is executed directly after fetching the project from github

Checklist

  • [X] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [X] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

kainchow avatar May 26 '24 12:05 kainchow

Hey @kainchow, I'm here to help you out with this Superset issue! I'm a bot that can assist with bug solving, answer questions, and help you become a contributor. Let's tackle this bug together! 🤖

To ensure that Superset starts in the production environment using Docker Compose, you should use the docker-compose-non-dev.yml file provided. Here are the steps to follow:

  1. Create a Docker environment file: Make sure you have a docker/.env file with your own unique random secure passwords and SECRET_KEY.

  2. Run the Docker Compose command: Use the following command to start Superset in the production environment:

    docker-compose -f docker-compose-non-dev.yml up -d
    

Ensure that the docker/.env file is correctly set up before running the command. The docker-compose-non-dev.yml file is configured for a non-development environment and should not default to development if the environment variables are correctly set.

Here is a snippet of the docker-compose-non-dev.yml file for reference:

version: "4.0"
services:
  redis:
    image: redis:7
    container_name: superset_cache
    restart: unless-stopped
    volumes:
      - redis:/data
  db:
    env_file:
      - path: docker/.env # default
        required: true
      - path: docker/.env-local # optional override
        required: false
    image: postgres:15
    container_name: superset_db
    restart: unless-stopped
    volumes:
      - db_home:/var/lib/postgresql/data
      - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d

  superset:
    env_file:
      - path: docker/.env # default
        required: true
      - path: docker/.env-local # optional override
        required: false
    build:
      <<: *common-build
    container_name: superset_app
    command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
    user: "root"
    restart: unless-stopped
    ports:
      - 8088:8088
    depends_on: *superset-depends-on
    volumes: *superset-volumes

  superset-init:
    container_name: superset_init
    build:
      <<: *common-build
    command: ["/app/docker/docker-init.sh"]
    env_file:
      - path: docker/.env # default
        required: true
      - path: docker/.env-local # optional override
        required: false
    depends_on: *superset-depends-on
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      disable: true

  superset-worker:
    build:
      <<: *common-build
    container_name: superset_worker
    command: ["/app/docker/docker-bootstrap.sh", "worker"]
    env_file:
      - path: docker/.env # default
        required: true
      - path: docker/.env-local # optional override
        required: false
    restart: unless-stopped
    depends_on: *superset-depends-on
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "celery -A superset.tasks.celery_app:app inspect ping -d celery@$$HOSTNAME",
        ]
  superset-worker-beat:
    build:
      <<: *common-build
    container_name: superset_worker_beat
    command: ["/app/docker/docker-bootstrap.sh", "beat"]
    env_file:
      - path: docker/.env # default
        required: true
      - path: docker/.env-local # optional override
        required: false
    restart: unless-stopped
    depends_on: *superset-depends-on
    user: "root"
    volumes: *superset-volumes
    healthcheck:
      disable: true

volumes:
  superset_home:
    external: false
  db_home:
    external: false
  redis:
    external: false

For more advanced configurations, you can refer to the docker/README.md file in the Superset repository [1][2].

Details

About Dosu This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

dosubot[bot] avatar May 26 '24 12:05 dosubot[bot]

I created a new superset_config_docker.py file in the docker/pythonpath_dev directory and added SECRET_KEY, but it still enters the development environment when executing docker compose -f docker-compose-non-dev up, here is superset_config_docker.py:

import os
from superset.utils import core as utils

FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True,
}

ENABLE_PROXY_FIX = True
SECRET_KEY = "jwoxth9akQkkzTnen2P4BRQgTRoT8fsv8f3XTKalqE2Ur2ZHQ1NeZxdVxU70Uake"

BABEL_DEFAULT_LOCALE='zh'
BABEL_DEFAULT_FOLDER = 'superset/translations'
LANGUAGES = {
    'zh': {'flag': 'cn', 'name': '简体中文'},
    'en': {'flag': 'us', 'name': 'English'}
}

WTF_CSRF_ENABLED = False
TALISMAN_ENABLED = utils.cast_to_boolean(os.environ.get("TALISMAN_ENABLED", False))

# Maximum number of rows returned for any analytical database query
SQL_MAX_ROW = 10000000
# default row limit when requesting chart data
# ROW_LIMIT = 10000000
FAVICONS = [{"href": "/static/assets/images/superset-mz-black.png"}]

kainchow avatar May 27 '24 02:05 kainchow

By the way, BABEL_DEFAULT_LOCALE and LANGUAGES are effective. image

kainchow avatar May 27 '24 02:05 kainchow

When I use tag=3.1.3, superset works fine for production, but the latest version, 4.0.1rc, doesn't work! image

kainchow avatar May 28 '24 01:05 kainchow

tag=4.0.1 worked for me, but master branch error

kainchow avatar May 30 '24 05:05 kainchow

@kainchow it doesn't seem to be solved with the new release (4.1.0), right?

matteomarjanovic avatar Nov 15 '24 13:11 matteomarjanovic