プログラミングいちねんせい

プログラミング歴ゼロの初心者がもがくサイトです

DockerでApach+PHP+MySQLの環境構築までの道 1

とりあえず勉強のためのApache+PHP+MySQLの環境構築を1つのゴールとします。まずはDockerfileとdocker-composeを使ってMySQL単体を起動し日本語入力が動作することを目指します。

現在の問題点

MySQLが日本語入力を受け付けない。日本語を入力すると文字が消えるのは文字コードがutf8mb4を指定していないため。

f:id:javacurry:20210518135944j:plain
文字コード

utf8mb4とは?

utf8とutf8mb4の違いですが、4バイト長文字に対応しているか否からしいです。4バイト長に対応していないと常用漢字の表示に影響出るのでutf8mb4の採用がベストらしいです。

my.cnfを読み込まない

mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.

MySQLのコンテナに入ると上記メッセージが表示されます。Windows特有の問題らしく権限が777になってしまい無視されるということです。ここに頭を悩ませています。

試したこと

  • volumesを使う
  • my.cnfにutf8mb4を指定
  • Dockerfileでcnfをコピーする COPY ./my.cnf /etc/mysql/conf.d/my.cnf
  • Dockerfileで権限を与える RUN chmod 644 /etc/mysql/conf.d/my.cnf
  • Dockerfileでコマンド指定CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
  • マウント先のフォルダの中身を削除してからビルドし直す

まとめ

検索して、やれることはやりました。疲れちゃった。