0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[Docker][M1 Mac] Unknown MySQL server host 'db' (-2) と表示されてdb:createができない!!

Last updated at Posted at 2024-06-29

はじめに

dockerのbuildが完了しRailsのデータベース作成しようと、

docker compose run main rails db:create

を実行した際に以下のエラーが発生。

Unknown MySQL server host 'mysql' (-2) Couldn't create 'myapp_development' database. 
Please check your configuration. rails aborted!

docker-compose.ymlは次の通り。

docker-compose.yml
services:
  mysql:
    container_name: myapp_mysql
    image: mysql:5.7
    platform: linux/x86_64
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: password
      - TZ=Asia/Tokyo
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

環境

  • Docker 26.1.1
  • Rails 6.0
  • Ruby 3.0.3
  • MySQL 8.0
  • M1 mac

結論

MY SQL5.7のイメージはplatform: linux/x86_64では起動しないので、arm版のある mysql-serverイメージを使う必要がありました。

【参考】
https://zenn.dev/junki555/articles/4fcda598d3b65f

docker-compose.yml
services:
  mysql:
    container_name: myapp_mysql
    image: mysql/mysql-server:5.7
    platform: linux/x86_64
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: password
      - TZ=Asia/Tokyo
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

最新の8.0系をつかう場合では以下でも起動できました。

docker-compose.yml
services:
  mysql:
    container_name: myapp_mysql
    image: mysql/mysql-server:latest
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: password
      - TZ=Asia/Tokyo
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

まとめ

M1 Macで環境構築をする際に、docker-compose.ymlのdbにplatformを指定しなければいけないことはわかっていたので、

 platform: linux/x86_64

は元々指定していましたが、それで設定は全て解決と思い込んでしまっており、全然関係ないdatebase.ymlの設定を調査していました。
上手くいっていない時は必ず原因があるので、現状の環境自体を疑うことからはじめたいです。

0
0
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
0
0