From 6a2783b2b540a657739e44c7102d546d84e5d720 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Wed, 3 Nov 2021 15:45:51 -0700 Subject: [PATCH] feat: Add basic support for Apple Silicon --- Makefile | 9 ++++ docker-compose-arm64v8.yml | 86 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 docker-compose-arm64v8.yml diff --git a/Makefile b/Makefile index 74efca352f..22313a5c20 100644 --- a/Makefile +++ b/Makefile @@ -74,6 +74,15 @@ COMPOSE_FILE := docker-compose-host.yml COMPOSE_FILE := $(COMPOSE_FILE):docker-compose-themes.yml COMPOSE_FILE := $(COMPOSE_FILE):docker-compose-watchers.yml COMPOSE_FILE := docker-compose.yml:$(COMPOSE_FILE) +ifdef COMPOSE_OVERRIDES_FILE + COMPOSE_FILE := $(COMPOSE_FILE):$(COMPOSE_OVERRIDES_FILE) +endif + +# Check system architecture, e.g. use arm64v8 on Apple Silicon / M1 +OS_ARCH := $(shell uname -p) +ifeq ($(OS_ARCH),arm) + COMPOSE_FILE := $(COMPOSE_FILE):docker-compose-arm64v8.yml +endif # Tell Docker Compose that the Compose file list uses a colon as the separator. COMPOSE_PATH_SEPARATOR := : diff --git a/docker-compose-arm64v8.yml b/docker-compose-arm64v8.yml new file mode 100644 index 0000000000..6518b7d9a2 --- /dev/null +++ b/docker-compose-arm64v8.yml @@ -0,0 +1,86 @@ +# These overrides allow Open edX devstack to run on ARM64 systems like the M1 Macs (Apple Silicon) +# However, these amd64 images are likely to be very slow. We should replace them with ARM64 versions +# as much as possible. +version: "2.1" + +services: + + chrome: + platform: linux/amd64 + + coursegraph: + platform: linux/amd64 + + devpi: + platform: linux/amd64 + + elasticsearch: + platform: linux/amd64 + + # elasticsearch7: + # image: elasticsearch:7.8.1 is available in linux/arm64/v8 + + # elasticsearch710: + # image: elasticsearch:7.10.1 is available in linux/arm64/v8 + + firefox: + platform: linux/amd64 + + # memcached: + # image: memcached:1.5.10-alpine is available in linux/arm64/v8 + + # mongo: + # image: mongo:4.2.14 is available in linux/arm64/v8 + + mysql57: + #image: mysql:5.7 doesn't support linux/arm64/v8 + image: mariadb:10.4 + + redis: + # image: redis:2.8 is ancient and doesn't support linux/arm64/v8 + image: redis:5 + + # ================================================ + # edX services + # ================================================ + + credentials: + platform: linux/amd64 + + discovery: + platform: linux/amd64 + + ecommerce: + platform: linux/amd64 + + edx_notes_api: + platform: linux/amd64 + + forum: + platform: linux/amd64 + + lms: + platform: linux/amd64 + + insights: + platform: linux/amd64 + + analyticsapi: + platform: linux/amd64 + + registrar: + platform: linux/amd64 + + registrar-worker: + platform: linux/amd64 + + studio: + platform: linux/amd64 + + xqueue: + platform: linux/amd64 + + xqueue_consumer: + platform: linux/amd64 + + # edX Microfrontends all use node:12 which has linux/arm64/v8 builds.