Open2
M1 MacのDockerでMySQLのビルドに失敗したから、ちょっと調べる
こんな感じのdocker-compose.ymlを用意して、ビルドしたらコケたので調べてみた。
version: "3.9"
services:
web-app:
container_name: lamp-web-app
build:
context: .
dockerfile: ./docker/web-app/Dockerfile
ports:
- ${WEB_APP_PORT}:80
volumes:
- ./lamp-base:/docker-lamp
depends_on:
- db
db:
container_name: lamp-db
image: mysql:5.7
platform: linux/amd64
ports:
- ${DB_PORT}:3306
volumes:
- db-store:/var/lib/mysql
- ./docker/db/init-sql:/docker-entrypoint-initdb.d
- ./docker/db/my.cnf:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_DATABASE:
MYSQL_USER:
MYSQL_PASSWORD:
tty: true
restart: always
volumes:
db-store:
で実際コンソールでこんな感じでエラーを吐いて、ビルドが失敗した。dbコンテナを立てるときに失敗しているのでMySQL周りの設定が怪しいなと。
エラー文を意訳すると、linux/arm64/v8に対応してるコンテナはないよ的な
$ docker compose up --build -d
[+] Running 0/1
⠸ db Pulling 3.4s
no matching manifest for linux/arm64/v8 in the manifest list entries
調べるといくつか記事が出てきて、M1 MacのCPUアーキテクチャ(ARM64)による違いでどうやらエラーが起こっている。platformをlinux/amd64に指定することで解決する。詳細は各記事を参考にされたい。
platformを指定して、linux/amd64にエミュレートする指定をすることで正常に動くようになります
個人的には丁寧だったのでこの記事は分かりやすかった。