You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Docker Compose部署自定义Apache Superset生产环境遇错求助

Apache Superset自定义镜像启动失败(exit 137)排查方案

问题背景

我们是小型企业,熟悉Docker但无精力学习Kubernetes,需在单服务器部署带自定义前后端代码修改的Apache Superset生产环境,对接外部PostgreSQL实例。执行以下操作后启动失败:

  • 克隆源码并构建镜像:
    git clone https://github.com/apache/superset.git
    docker build -t superset:latest .
    
  • 修改docker-compose-image-tag.yml指向自建镜像后启动:
    docker compose -f docker-compose-image-tag.yml up
    

错误日志

启动时输出如下错误:

superset_init         | Installed 1 package in 2ms
superset_init         |  ~ apache-superset==0.0.0.dev0 (from file:///app)
superset_init         | Skipping local overrides
superset_init         | Unknown Operation!!!
superset_init         | ######################################################################
superset_init         | Init Step 1/4 [Starting] -- Applying DB migrations
superset_init         | ######################################################################
Gracefully stopping... (press Ctrl+C again to force)
service "superset-init" didn't complete successfully: exit 137

排查与修复方案

1. 优先解决内存不足问题(exit 137核心诱因)

exit 137是容器被内核OOM Killer强制终止的典型标志,Superset初始化(尤其是数据库迁移阶段)需要足够内存:

  • 检查服务器实时内存占用:
    free -h
    
  • 为superset-init服务增加内存配额(修改docker-compose-image-tag.yml):
    services:
      superset-init:
        deploy:
          resources:
            limits:
              memory: 4G
            reservations:
              memory: 2G
    
  • 若使用Docker Desktop,直接在设置中调整Daemon内存分配;Linux环境修改/etc/docker/daemon.json后重启Docker服务。

2. 验证自定义镜像构建完整性

  • 重新构建镜像并查看完整日志,确保前端编译、依赖安装无报错:
    docker build --progress=plain -t superset:latest .
    
  • 镜像内验证Superset版本,若显示0.0.0.dev0说明版本信息打包异常,需检查源码目录是否有文件损坏:
    docker run --rm superset:latest superset version
    

3. 修正初始化命令配置

Unknown Operation!!!提示初始化脚本无法识别当前操作:

  • 确认docker-compose-image-tag.yml中superset-init的命令配置正确:
    superset-init:
      command: ["superset", "init"]
    
  • 若自定义了初始化脚本,确保脚本内命令合法,且镜像已包含对应执行环境。

4. 验证外部PostgreSQL连通性

  • 测试容器与外部PostgreSQL实例的网络连通性:
    docker run --rm superset:latest ping <POSTGRESQL_HOST>
    docker run --rm superset:latest psql -h <POSTGRESQL_HOST> -U <USER> -d <DB_NAME>
    
  • 检查docker-compose-image-tag.yml中数据库连接配置是否正确:
    environment:
      SQLALCHEMY_DATABASE_URI: postgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME>
    

内容的提问来源于stack exchange,提问作者Kanagavelu Sugumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:12:34