Skip to content

Instantly share code, notes, and snippets.

@jonsoini
Last active February 6, 2024 20:07
Show Gist options
  • Save jonsoini/36c990b663473203668c0763bde5f73c to your computer and use it in GitHub Desktop.
Save jonsoini/36c990b663473203668c0763bde5f73c to your computer and use it in GitHub Desktop.
Getting SuperSet running on Mac ARM with Docker Compose

Getting SuperSet running...

This is how I got SuperSet running on a Mac M1 machine after numerous errors from the install documentation. There are a few open issues related to running 'docker compose up' on a mac.

Currently images are for AMD64 and emulated... this should be updated in the future.

Open issues that I experienced in some form or another, in getting Superset running:

Prerequesites

  • Docker Desktop is installed and running properly
  • IMPORTANT Remove all previous containers/images/volumes related to SuperSet via docker container rm (containername) docker image rm (imagename) docker volume rm (volumename)
    • Or use the desktop app to view and delete them all.

Installing

  • git clone https://github.com/apache/superset.git
  • cd superset
  • Now you must edit some files...

Editing the ./docker-compose-non-dev.yml

You'll need to add this to every service in docker-compose-non-dev.yml platform: linux/x86_64/v8

I've attached an example from 3.1.0 to this gist.

Create docker/requirements-local.txt

Create a the file above, and add this to it:

psycopg2==2.9.9
sqlglot==20.5.0

Compose Up

Now bring it up, via the the more production-oriented compose up, I couldn't get the dev version to work without errors.

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

First Login

Now you should be able to login at http://127.0.0.1:8088/ with admin:admin

#
# 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.
#
x-superset-image: &superset-image apachesuperset.docker.scarf.sh/apache/superset:${TAG:-latest}
x-superset-depends-on: &superset-depends-on
- db
- redis
x-superset-volumes:
&superset-volumes # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
- ./docker:/app/docker
- superset_home:/app/superset_home
version: "3.7"
services:
redis:
platform: linux/x86_64/v8
image: redis:7
container_name: superset_cache
restart: unless-stopped
volumes:
- redis:/data
db:
platform: linux/x86_64/v8
env_file: docker/.env-non-dev
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:
platform: linux/x86_64/v8
env_file: docker/.env-non-dev
image: *superset-image
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:
platform: linux/x86_64/v8
image: *superset-image
container_name: superset_init
command: ["/app/docker/docker-init.sh"]
env_file: docker/.env-non-dev
depends_on: *superset-depends-on
user: "root"
volumes: *superset-volumes
healthcheck:
disable: true
superset-worker:
platform: linux/x86_64/v8
image: *superset-image
container_name: superset_worker
command: ["/app/docker/docker-bootstrap.sh", "worker"]
env_file: docker/.env-non-dev
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:
platform: linux/x86_64/v8
image: *superset-image
container_name: superset_worker_beat
command: ["/app/docker/docker-bootstrap.sh", "beat"]
env_file: docker/.env-non-dev
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment