Navid61 opened a new issue, #33686:
URL: https://github.com/apache/superset/issues/33686

   ### Bug description
   
   ```markdown
   When building **Superset** from source using **Docker Compose** 
(`docker-compose-non-dev.yml`), the build process fails during the `npm ci` 
step due to **Puppeteer** being unable to download Chrome/Chromium.  
   This happens even though `PUPPETEER_SKIP_DOWNLOAD=true` is set in both the 
`.env` file and the **Docker Compose** environment sections for all 
Superset-related services.
   
   ## Reproduction Steps
   1. Clone the latest **Superset** repository.
   2. Prepare the following files:
      - `.env` in the `docker/` directory (with `PUPPETEER_SKIP_DOWNLOAD=true` 
and production settings).
      - `docker-compose-non-dev.yml` (see "additional context" for full config).
   3. Run:
      ```bash
      export PUPPETEER_SKIP_DOWNLOAD=true
      docker compose -f docker-compose-non-dev.yml up -d --build
      ```
   4. The build fails at the frontend step with:
      ```vbnet
      npm error Error: Failed to set up chrome-headless-shell v127.0.6533.88! 
Set "PUPPETEER_SKIP_DOWNLOAD" env variable to skip download.
      ```
   
   ## Expected Behavior
   The build should respect `PUPPETEER_SKIP_DOWNLOAD=true` set in the 
environment and skip downloading Chrome/Chromium during build, or there should 
be documentation clarifying how to skip this in Docker-based builds.
   
   ## Actual Behavior
   Build fails with Puppeteer download error (403 Forbidden from 
`storage.googleapis.com`).  
   The error message instructs to set the `PUPPETEER_SKIP_DOWNLOAD` env 
variable, but doing so in `.env`, `docker-compose-non-dev.yml`, and even the 
shell before building does not resolve the problem.
   ```
   
   ### Screenshots/recordings
   
   
![Image](https://github.com/user-attachments/assets/b71bb3c7-40c4-4045-bb18-16e6c329c50d)
   
   
   
   ### Superset version
   
   4.1.2
   
   ### Python version
   
   3.11
   
   ### Node version
   
   18 or greater
   
   ### Browser
   
   Not applicable
   
   ### Additional context
   
   Superset version: Latest master (as of 2025-06-04)
   Python version: 3.11 (docker image: python:3.11.12-slim-bookworm)
   Node version: 20 (node:20-bookworm-slim)
   OS: Debian 12 
   
   Browser: N/A (error during build, not at runtime)
   
   docker info:
   
   docker info                                                                  
                                                                                
          ✔ │ 
   Client:
    Context:    default
    Debug Mode: false
    Plugins:
     compose: Docker Compose (Docker Inc., v2.36.2)
   
   Server:
    Containers: 4
     Running: 3
     Paused: 0
     Stopped: 1
    Images: 6
    Server Version: 20.10.24+dfsg1
    Storage Driver: overlay2
     Backing Filesystem: extfs
     Supports d_type: true
     Native Overlay Diff: true
     userxattr: false
    Logging Driver: json-file
    Cgroup Driver: systemd
    Cgroup Version: 2
    Plugins:
     Volume: local
     Network: bridge host ipvlan macvlan null overlay
     Log: awslogs fluentd gcplogs gelf journald json-file local logentries 
splunk syslog
    Swarm: inactive
    Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
    Default Runtime: runc
    Init Binary: docker-init
    containerd version: 1.6.20~ds1-1+deb12u1
    runc version: 1.1.5+ds1-1+deb12u1
    init version: 
    Security Options:
     apparmor
     seccomp
      Profile: default
     cgroupns
    Kernel Version: 6.1.0-37-amd64
    Operating System: Debian GNU/Linux 12 (bookworm)
    OSType: linux
    Architecture: x86_64
    CPUs: 4
    Total Memory: 15.24GiB
    Name: Survey
    ID: WZ4N:2XOB:7OMA:C7BZ:OHI3:R3HK:AN2A:XRTN:MKTF:UEC6:B5QR:5C6U
    Docker Root Dir: /var/lib/docker
    Debug Mode: false
    Registry: https://index.docker.io/v1/
    Labels:
    Experimental: false
    Insecure Registries:
     127.0.0.0/8
    Live Restore Enabled: false
   
   
   
   cat docker/.env                                                              
                                                                                
          ✔ 
   PYTHONUNBUFFERED=1
   COMPOSE_PROJECT_NAME=superset
   
   # --- Security ---
   DEV_MODE=false
   FLASK_DEBUG=false
   SUPERSET_ENV=production
   
   # --- Superset settings ---
   SUPERSET_APP_ROOT="/"
   SUPERSET_LOAD_EXAMPLES=yes         # Loads example dashboards
   SUPERSET_PORT=8088
   SUPERSET_LOG_LEVEL=info
   
   # --- Secret key: change this! ---
   SUPERSET_SECRET_KEY=******
   # Generate one: openssl rand -base64 42
   
   # --- Database settings: change these passwords! ---
   DATABASE_DB=superset
   DATABASE_HOST=db
   DATABASE_PORT=5432
   DATABASE_USER=superset
   DATABASE_PASSWORD=*******
   
   POSTGRES_DB=superset
   POSTGRES_USER=superset
   POSTGRES_PASSWORD=*******
   DATABASE_DIALECT=postgresql
   
   # --- Redis ---
   REDIS_HOST=redis
   REDIS_PORT=6379
   
   # --- External APIs (optional) ---
   MAPBOX_API_KEY=
   
   # --- Dev settings (disable in prod) ---
   CYPRESS_CONFIG=false
   ENABLE_PLAYWRIGHT=false
   PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
   BUILD_SUPERSET_FRONTEND_IN_DOCKER=true
   
   # --- Examples DB (not used in prod) ---
   EXAMPLES_DB=
   EXAMPLES_HOST=
   EXAMPLES_USER=
   EXAMPLES_PASSWORD=
   EXAMPLES_PORT=
   
   
   ```yaml
   #
   # Licensed to the Apache Software Foundation (ASF) under one or more
   # contributor license agreements.  See the NOTICE file distributed with
   # this work for additional information regarding copyright ownership.
   # The ASF licenses this file to You under the Apache License, Version 2.0
   # (the "License"); you may not use this file except in compliance with
   # the License.  You may obtain a copy of the License at
   #
   #    http://www.apache.org/licenses/LICENSE-2.0
   #
   # Unless required by applicable law or agreed to in writing, software
   # distributed under the License is distributed on an "AS IS" BASIS,
   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   # See the License for the specific language governing permissions and
   # limitations under the License.
   #
   
   # -----------------------------------------------------------------------
   # We don't support docker compose for production environments.
   # If you choose to use this type of deployment make sure to
   # create you own docker environment file (docker/.env) with your own
   # unique random secure passwords and SECRET_KEY.
   # -----------------------------------------------------------------------
   x-superset-volumes:
     &superset-volumes # /app/pythonpath_docker will be appended to the 
PYTHONPATH in the final container
     - ./docker:/app/docker
     - /opt/superset/logs:/app/superset_home/logs
     - /opt/superset/uploads:/app/superset_home/uploads
   x-common-build: &common-build
     context: .
     target: dev
     cache_from:
       - apache/superset-cache:3.10-slim-bookworm
   
   services:
     redis:
       image: redis:7
       container_name: superset_cache
       restart: unless-stopped
       volumes:
         - /opt/superset/redis:/data
   
     db:
       env_file:
         - path: docker/.env # default
           required: true
         - path: docker/.env-local # optional override
           required: false
       image: postgres:16
       container_name: superset_db
       restart: unless-stopped
       volumes:
         - /opt/superset/db:/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-init:
           condition: service_completed_successfully
       volumes: *superset-volumes
       environment:
         SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}"
         PUPPETEER_SKIP_DOWNLOAD: "true"
   
     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:
         db:
           condition: service_started
         redis:
           condition: service_started
       user: "root"
       volumes: *superset-volumes
       healthcheck:
         disable: true
       environment:
         SUPERSET_LOAD_EXAMPLES: "${SUPERSET_LOAD_EXAMPLES:-yes}"
         SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}"
         PUPPETEER_SKIP_DOWNLOAD: "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-init:
           condition: service_completed_successfully
       user: "root"
       volumes: *superset-volumes
       healthcheck:
         test:
           [
             "CMD-SHELL",
             "celery -A superset.tasks.celery_app:app inspect ping -d 
celery@$$HOSTNAME",
           ]
       environment:
         SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}"
         PUPPETEER_SKIP_DOWNLOAD: "true"
   
     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-init:
           condition: service_completed_successfully
       user: "root"
       volumes: *superset-volumes
       healthcheck:
         disable: true
       environment:
         SUPERSET_LOG_LEVEL: "${SUPERSET_LOG_LEVEL:-info}"
         PUPPETEER_SKIP_DOWNLOAD: "true"
   ```
   
   
   
   ### 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.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to