もともとのmysqlのイメージを使っていると動かず、linux/amd64のプラットフォームを利用する必要がある。
Dockerfile.m1
とdocker-compose.m1.yml
をそれぞれ作った。
Dockerfile.m1
FROM --platform=linux/amd64 mysql:5.7
# FROM mysql@sha256:77b7e09c906615c1bb59b2e9d7703f728b1186a5a70e547ce2f1079ef4c1c5ca
RUN echo "USE mysql;" > /docker-entrypoint-initdb.d/timezones.sql && mysql_tzinfo_to_sql /usr/share/zoneinfo >> /docker-entrypoint-initdb.d/timezones.sql
COPY ./my.cnf /etc/mysql/conf.d/my.cnf
docker-compose.m1.yml
ではDockerfile.m1
を指定するようにしている
docker-compose.m1.yml
mysql:
build:
context: .
dockerfile: ./mysql/Dockerfile.m1
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: backend
ports:
- 13306:3306
volumes:
- mysql_volume:/var/lib/mysql
my.cnfは以下のようにしている。
my.cnf
# MySQLサーバーへの設定
[mysqld]
# 文字コード/照合順序の設定
character_set_server=utf8mb4
collation_server=utf8mb4_bin
# タイムゾーンの設定
default_time_zone=SYSTEM
log_timestamps=SYSTEM
# デフォルト認証プラグインの設定
default_authentication_plugin=mysql_native_password
# mysqlオプションの設定
[mysql]
# 文字コードの設定
default_character_set=utf8mb4
# mysqlクライアントツールの設定
[client]
# 文字コードの設定
default_character_set=utf8mb4
参考
ありがとうございました。