🖥️

M1 macでも利用できるmysqlイメージを使ってMySQL環境を作成

2022/03/04に公開

これはなに

DBの挙動を確認する時、よくローカルでMySQLのコンテナを利用していたけど、M1 macに変えてからうまく行かなくなった。今後もローカルでMySQLを利用する機会はあるのでM1 mac, Intel mac双方で利用できるイメージで環境構築を用意してみた。

自分が使いやすいような設定も一緒に行っているので、備忘録として書いておく。

Docker Desctop

  • version 4.4.2

MySQLイメージ

このイメージがlinux/amd64, linux/arm64それぞれのplatformに対応しているので、どちらのmacでも利用できる。

docker-compose.yml

./docker-compose.yml
version: '3'
services:
  db:
    image: mysql:8.0-oracle
    restart: always
    environment:
      TZ: Asia/Tokyo
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql
      - ./initdb.d:/docker-entrypoint-initdb.d
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    ports:
      - '3306:3306'
volumes:
  db_data:

initdb.d/init.sql

DB初期化時に実行したいSQL。
利用するときはプログラムからDBの操作を行なうので、rootアカウントを利用するのではなく
testerアカウントを作成した。

./initdb.d/init.sql
CREATE DATABASE IF NOT EXISTS sample DEFAULT character set utf8;
CREATE USER 'tester'@'%' IDENTIFIED WITH caching_sha2_password BY 'tester';
GRANT ALL PRIVILEGES ON *.* TO 'tester'@'%';

コンテナを立ち上げる

docker-compose.yml, initdb.d/init.sqlが準備できたら早速コンテナを立ち上げてみる。

$ docker compose up -d

# 別のterminalから
$ docker compose exec db mysql -utester -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

無事、テストアカウントでDBに入ることが出来た。

おわり

M1 mac / Intel mac 両方で想定した通りにSQLも実行され問題なく動いてることを確認。
使いたかったプログラムのマイグレーションも実際に行ったが問題なかった。

Discussion