M1版Macで環境構築中にdocker-compose up mysqlのエラー
Q&A
Closed
開発環境
macOS BIGSUR
version11.6
apple M1
mysql: stable 8.0.28 (bottled)
解決したいこと
docker-compose up mysql 実行後のエラーで、localhostに接続ができません。
DockerでRails開発環境を構築中です。
既存のRailsリポジトリをpcにクローンして、Dockerを導入しようとしたのですが、M1版Macのため、その調整で
A:Docker関連ファイルをM1サポート用ファイルで置き換え
cp ./for_m1_docker/docker-compose.yml ./docker-compose.yml
cp ./for_m1_docker/Dockerfile.dev ./Dockerfile.dev
git add docker-compose.yml Dockerfile.dev
git commit -m "M1 Mac用のDocker関連ファイルに変更"
B:mysqlの初期設定
docker-compose build
docker-compose up mysql
以上のコマンドをしたのですが、以下のようなエラーが発生してlocalhostに接続ができません。
発生している問題・エラー
2022-03-24T14:37:30.674401Z 1 [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.
ちなみにdocker-compose psした結果は以下のようになります。
% docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
sho_yamauchi-mysql-1 "docker-entrypoint.s…" mysql running 0.0.0.0:33306->3306/tcp
sho_yamauchi-potepanec-1 "entrypoint.sh bundl…" potepanec exited (1)
yamauchishou@yamauchishounoMacBook-Pro sho_yamauchi % brew info mysql
該当するソースコード
ruby.docker-compose.yml
version: "3"
volumes:
mysql_data:
vendor_bundle:
node_modules:
public_spree:
storage:
services:
mysql:
platform: linux/x86_64
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
networks:
- default
ports:
- '33306:3306'
volumes:
- mysql_data:/var/lib/mysql
potepanec:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- '3000:3000'
environment:
MYSQL_USERNAME: root
MYSQL_PASSWORD: password
MYSQL_HOST: mysql
depends_on:
- mysql
networks:
- default
volumes:
- .:/potepanec
# https://qiita.com/shotat/items/57d049793605ffc20135
- /potepanec/log
- /potepanec/tmp
- vendor_bundle:/potepanec/vendor/bundle
- node_modules:/potepanec/node_modules
- public_spree:/potepanec/public/spree
- storage:/potepanec/storage
tty: true
stdin_open: true
command: bundle exec rails server -b 0.0.0.0
ruby.database.yml
default: &default
adapter: mysql2
encoding: utf8
collation: utf8_general_ci
pool: 5
host: <%= ENV['MYSQL_HOST'] || 'localhost' %>
username: <%= ENV['MYSQL_USERNAME'] || 'root' %>
password: <%= ENV['MYSQL_PASSWORD'] || '' %>
socket: /tmp/mysql.sock
development:
<<: *default
database: potepanec_2_7_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: potepanec_2_7_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: potepanec_2_7_production
username: potepanec
password: <%= ENV['POTEPANEC_DATABASE_PASSWORD'] %>
エラーの和訳が
LinuxネイティブAIOインターフェースは、このプラットフォームではサポートされていませ。 OSのドキュメントを確認し、InnoDBの適切なバイナリをインストールしてください。
となるのですが、適切なバイナリが分かりません。
もしくは、ソースコードを変更すれば、解決するのでしょうか。
アドバイスお願いいたします。
0