2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M3チップMacでdocker-compose upを行った際にエラーが出て環境構築できない問題の解決方法

Last updated at Posted at 2024-04-03

概要

新しく買ったM3 Macbook Airでdockerを使ってMySQLの環境を構築しようとした際にエラーが出てしまい、少し躓いたので備忘録として残しておきます。

内容

起動させたいコンテナ

今回は、下記yamlファイルのコンテナを起動させようとしました。

docker-compose.yaml
version: '3.3'
services:

  mysql:
    image: mysql:5.7
    container_name: db-for-go
    command: 
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        - --sql-mode=ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    environment:
        MYSQL_ROOT_USER: ${ROOTUSER}
        MYSQL_ROOT_PASSWORD: ${ROOTPASS}
        MYSQL_DATABASE: ${DATABASE}
        MYSQL_USER: ${USERNAME}
        MYSQL_PASSWORD: ${USERPASS}
        TZ: 'Asia/Tokyo'
    ports: 
        - "3306:3306"
    volumes:
        - db-volume:/var/lib/mysql

volumes:
  db-volume:

エラー内容

実行したコマンド
docker-compose up

上記コマンドを実行した際に下記のエラーが発生しました。

表示されたエラー
no matching manifest for linux/arm64/v8 in the manifest list entries

調べてみた感じ、どうやらデフォルトではIntelやAMDといったx86アーキテクチャ向け提供されているDockerイメージを取得しようとしているっぽい。発生したエラーは、「M3チップはarm64アーキテクチャであるため、そのイメージは使えないよ」という内容です。

解決方法

方法①

"docker-compose up"コマンドを実行する前に、事前に必要なイメージをarm64用として引っ張ってくれば解決しそうです。今回は、MySQlのイメージが必要なので

事前に実行するコマンド
docker pull --platform linux/amd64  mysql:5.7

を先に実行し、その後"docker-compose up"を行ったら解決できました。

方法②

yamlファイルに一行追記すればOKでした。

docker-compose.yaml
version: '3.3'
services:

  mysql:
    image: mysql:5.7
    container_name: db-for-go
    platform: linux/amd64 # この行を追記
    command: 
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        - --sql-mode=ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    environment:
        MYSQL_ROOT_USER: ${ROOTUSER}
        MYSQL_ROOT_PASSWORD: ${ROOTPASS}
        MYSQL_DATABASE: ${DATABASE}
        MYSQL_USER: ${USERNAME}
        MYSQL_PASSWORD: ${USERPASS}
        TZ: 'Asia/Tokyo'
    ports: 
        - "3306:3306"
    volumes:
        - db-volume:/var/lib/mysql

volumes:
  db-volume:

この状態で"docker-compose up"を実行すると解決しました。

さいごに

今回は、yamlファイルで定義した設定でコンテナを作成しようとした際に発生したエラーの対処方法について紹介しました。
2つの方法があったが、使い分けとしては

  • 方法①:IntelやAMDなどのチップを利用したPCでも同じ環境を構築したい場合
  • 方法②:基本的にAppleシリコンチップのようにarm64アーキテクチャのPCのみで環境を構築する場合

といった形になると個人的に予想しています。

備考

Zennにも同じ記事を作成しています。
Zenn

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?