11

I can only play in my macbook air m1 with docker preview and i can't run an image of mysql with version 8.0.22 through a docker-compose file.

docker-compose set

The command i run is : docker-compose up -d mysql

How can I solve this problem?

  • 1
    Ioanni, it would be better if you added the `docker-compose` part as text. This way there are more possibilities a SO user will spend some time trying to recreate your problem and provide an answer. See also: [How to create a Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) – tgogos Mar 03 '21 at 12:04
  • 1
    Can you also post any relevant errors you're getting? Keep in mind the known issue that there's no ARM64 image for mysql per the Docker M1 Preview release notes [here](https://docs.docker.com/docker-for-mac/apple-m1/#known-issues) – cam Mar 03 '21 at 12:16
  • I've found setting an environment variable is a longer-term solution to this problem (also solves it immediately!): https://stackoverflow.com/a/66900911/2628402 – Alex P. Miller Mar 10 '22 at 02:39

4 Answers4

10

We've just ran into this issue, and I took the solution from this answer. You can specify your platform in the docker-compose file, so in your case it would look like:

services:
  mysql:
    image: mysql:8.0.22
    platform: linux/x86_64
    container_name: mysqldb
    restart: always
    ports:
      - 3306:3306
    volumes:
      - mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_DATABASE=DATA

In our company, we use M1 and Intel Macs and this solution makes mysql image available for both.

maestro
  • 671
  • 1
  • 13
  • 27
5

M1 is ARMv8 (aarch64) architecture and majority of the images are X86 (amd64). The whole emulation process based on bitfmt that allows to run containers from another architecture is still not stable for the ARMv8 release of Docker for Mac, so you would need to wait some time.

One way to overcome this problem is to build your own image of mysql for ARM64, by starting from some of the linux distributions such as alpine, debian, ubuntu and installing the mysql servers (same as you would have done on a bare-metal installation).

You can find lot's of containers that are already available in docker hub marked as ARM64v8 so this can be a good starting point to create your image.

jordanvrtanoski
  • 5,104
  • 1
  • 20
  • 29
2

I also struggled with X86 (amd64) images on my M1 Mac. But in your particular case, I would recommend to simply use MariaDB (image mariadb). All things I tried so far, have been fully compatible with MySQL and MariaDB is available for ARM64.

lexos
  • 21
  • 1
  • 3
1

You can also use mariadb as a drop-in replacement for mysql which supports M1 (arm64):

    mysql:
        restart: unless-stopped
        image: mysql:5.7.14

Becomes:

    mysql:
        restart: unless-stopped
        image: mariadb:10.2.41

Here's a list of the latest tags for MariaDB images:

https://hub.docker.com/_/mariadb?tab=tags

jfunk
  • 7,176
  • 4
  • 37
  • 38