Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 14 additions & 20 deletions dev-manual/env/compose.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,26 +74,20 @@ don't want to do so each time we invoke the ``docker compose`` command.
# For fish users
set -lx COMPOSE_FILE (pwd)/docker/docker-compose.dev.yml

ARM-based machines
------------------

If you are using an ARM-based machine such as Apple Silicon MacBooks, you will need to use
an additional override file that is provided to ensure compatibility. The Elasticsearch and Percona
images need to run with platform emulation since they don't support ARM64 natively.

For ARM-based machines, set the ``COMPOSE_FILE`` environment variable to include
both the development file and the ARM override file:

.. code-block:: bash

# For bash users (most of you)
export COMPOSE_FILE="$PWD/docker/docker-compose.dev.yml:$PWD/docker/docker-compose.override.arm.yml"

# For fish users
set -lx COMPOSE_FILE (pwd)/docker/docker-compose.dev.yml:(pwd)/docker/docker-compose.override.arm.yml

This override file forces Docker to use platform emulation to run the Elasticsearch and Percona containers
with ``linux/amd64`` architecture on ARM-based machines.
Apple Silicon and other ARM-based machines
------------------------------------------

Docker automatically selects the native image variant for your Docker engine
when an image publishes a multi-architecture manifest. The development service
images used by AtoM, including Elasticsearch and Percona, now publish ARM64
variants, so the default Compose file can run those services natively on Apple
Silicon.

Platform emulation is only needed if a service is explicitly configured with
``platform: linux/amd64``. We discourage that for everyday development on
ARM-based machines because it forces the affected container to run through
emulation instead of using the native ARM64 image, which is generally slower and
more resource-intensive.

Running the containers
======================
Expand Down
Loading