skip to Main Content

I’m running the latest build of the Docker Apple Silicon Preview. I created the tutorial container/images and it works fine. When I went to create a custom YAML file and run docker-compose I get the following error when pulling mysql:

ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries

Here is a snippet from my YAMl file:

version: '3'

services:
  # Database
  db:
    image: mysql-server:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: wp
      MYSQL_USER: wp
      MYSQL_PASSWORD: wp
    networks:
      - wpsite 

I’ve tried :latest and :8 which result in the same error. It pulls phpmyadmin and wordpress fine.

22

Answers


  1. Well, technically it will not solve your issue (running MySQL on ARM), but for the time being, you could add platform to your service like:

    services:
      db:
        platform: linux/x86_64
        image: mysql:5.7
        ...
    

    Alternatively, consider using MariaDB, which should work as a drop-in replacement like e.g. this:

    services:
      db:
        image: mariadb:10.5.8
        ...
    

    Both ways work for me on M1 with the Docker Preview

    Login or Signup to reply.
  2. I had a similar issue, solved with this line in my dockerfile:

    before

    FROM ubuntu:18.04
    

    after

    FROM --platform=linux/x86_64 ubuntu:18.04
    
    Login or Signup to reply.
  3. Oracle maintains a MySQL 8.0.23 docker image for arm64.
    https://hub.docker.com/r/mysql/mysql-server

    To use it in your docker-compose file

    version: "3.8"
    services:
      mysql:
        container_name: mycontainername
        image: mysql/mysql-server:8.0.23
        ports:
          - "3306:3306"
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: mydatabasename
          MYSQL_ROOT_HOST: "%"
        command: --lower_case_table_names=1
    
    Login or Signup to reply.
  4. Please refer to the following link for known issues. In your Mac’s terminal run

    softwareupdate --install-rosetta
    

    and then in docker-compose have something along the lines of

    mysql_gdpr:
        platform: linux/x86_64
        image: mysql/mysql-server:8.0.23
        ports:
          - "3306:3306"
        environment:
          MYSQL_DATABASE: "user_security"
          MYSQL_RANDOM_ROOT_PASSWORD: 1
          MYSQL_USER: "security"
          MYSQL_PASSWORD: "pleasechangeit"
    
    Login or Signup to reply.
  5. For anyone struggling to make it work with a specific version, the following didn’t work for me:

    docker run --platform linux/x86_64 mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=pass
    

    but this did:

     docker run --platform linux/x86_64 mysql:5.7 -e MYSQL_ROOT_PASSWORD=pass
    
    Login or Signup to reply.
  6. same problem for m1 mac just run this command

    docker pull --platform linux/x86_64 mysql
    
    Login or Signup to reply.
  7. From this answer, I added this to my local docker-compose.override.yml

    services:
    
      mysql:
        platform: linux/amd64
    
    Login or Signup to reply.
  8. can try start/run a container (for mac m1)

    docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysql
    
    Login or Signup to reply.
  9. Please note that when using --platform linux/x86_64 on arm64/v8 you may lose Linux Native AIO support.

    Check out the docker container logs:

    [ERROR] [MY-012585] [InnoDB] Linux Native AIO interface is not supported on this platform. Please check your OS documentation and install appropriate binary of InnoDB.
    [Warning] [MY-012654] [InnoDB] Linux Native AIO disabled.
    

    Consider using mysql/mysql-server instead, as it has arm64/v8 support out of the box.

    Login or Signup to reply.
  10. This Github repo allows to build a MySQL 5.7 aarch64 image.

    Building it with the following command (naming it the same as the official mysql:5.7 image) it will be used by default by all your docker-compose configurations or Dockerfiles that specify mysql:5.7.

    docker build -t mysql:5.7 .
    

    It means that you won’t have updates from the official MySQL Dockerhub repo anymore, but as a temporary drop-in replacement I find it useful.

    Login or Signup to reply.
  11. Docker on its official documentation says:

    Not all images are available for ARM64 architecture. You can add
    --platform linux/amd64 to run an Intel image under emulation. In
    particular, the mysql image is not available for ARM64. You can work
    around this issue by using a mariadb image.

    (source here)

    So what you should do to make your project work is to add platform: linux/amd64 to your docker-compose.yml.

    It would look like:

    services:
        mysql:
            image: mysql:5.7
            platform: linux/amd64
            ...
    

    As you can imagine probably the performance won’t be the same.

    Login or Signup to reply.
  12. Attempts to run x86 containers on M1 machines under emulation can crash. Even when the containers do run correctly under emulation, they will be slower and use more memory than the native equivalent. From here https://docs.docker.com/desktop/mac/apple-silicon/#known-issues

    Login or Signup to reply.
  13. This works for me in mac M1, specifying platform key inside service.

    services:
      mysql:
        platform: linux/amd64
        image: mysql:latest
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: example
        ports:
          - 3306:3306
    
    Login or Signup to reply.
  14. I’ve also encountered this issue on M1 Pro and to solve the most stable way for me was to disable buildkit in the Docker engine settings, meaning setting to false instead the default true. There is also an open issue here https://github.com/docker/for-mac/issues/5873

    Login or Signup to reply.
  15. Look at this github post

    Since "Oracle only supplies pre-compile Arm64" binaries, you have it there with

    Image –> mysql:8.0-oracle

    docker run -d –name mysql-8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<your_password> mysql:8.0-oracle

    Login or Signup to reply.
  16. Change the platform in docker command

    Param : –platform linux/x86_64

    Login or Signup to reply.
  17. This is for anyone who is here for the same issue but with the ibmcom/db2

    You can use the below command to pull the db2 image

    docker pull --platform linux/x86_64 ibmcom/db2:latest
    
    Login or Signup to reply.
  18. Using this below image solved my problem.

    mysql/mysql-server:8.0.23
    
    Login or Signup to reply.
  19. In your Dockerfile for mysql if you have the following

    FROM mysql:8.0.28

    change it to

    FROM --platform=linux/x86_64 mysql:8.0.28

    because the Docker in Apple M1 is going to look for an ARM image, and MySQL doesn’t publish ARM images, so that’s why you are getting

    failed to solve with frontend dockerfile.v0: failed to create LLB
    definition: no match for platform in manifest

    with the --platform flag, even though we are in ARM processor we are telling docker that we want to use the x86_64 image

    Login or Signup to reply.
  20. I have the M1 chip.

    Today I found this works fine in the latest KSQL master branch. Here’s the commands

    git clone https://github.com/confluentinc/ksql.git
    cd ksql
    docker-compose up -d
    

    It magically brings up the Zookeeper, three instances of Kafka server, a Schema Registry and a CLI.

    Reference:
    KSQLDB Docker Guide

    Login or Signup to reply.
  21. To resolve the issue, we need to pass the platform with value into your docker image/file.

    Using docker-compose.yaml file:

    services:
      db:
        platform: linux/x86_64
        image: mysql:5.7
        ...
    

    Using Docker file:

    FROM --platform=linux/x86_64 mysql:5.7
    

    Using docker pull command:

    docker pull --platform=linux/x86_64 mysql:5.7
    

    Using DOCKER_DEFAULT_PLATFORM parameter:

    export DOCKER_DEFAULT_PLATFORM=linux/x86_64
    

    Some of other well known platforms are: linux/amd64, linux/arm64 etc.

    Login or Signup to reply.
    • In my M1-Pro chip, worked with this command.

    docker run --platform linux/amd64 --name mysql-5-7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search