1.はじめに
いままでPHPの開発ではMAMPを使用していたのですが、Laravelの公式チュートリアルでもDockerを使用していたり、今後のためにちゃんと勉強しておくかと思い、最近学習を始めました。
とりあえず、最低限の知識からと思い、『図解! Dockerのツボとコツがゼッタイにわかる本』(秀和システム・角間実著)を使用していました。
その本の中でLAMP環境を作成する章があり、環境構築をしていたところ、参考書通りDockerfileとdocker-compose.ymlを記述したのですが、MySQLコンテナが立ち上がらない、また、MySQLのrootユーザーでログインできないという事象がありました。
その事象と解決方法について備忘録として書いていこうと思います。
今回は前者のMySQLコンテナが立ち上がらない件について書いていきたいと思いもいます。
2.事象
MySQLのコンテナを立ち上げる時に下記画像のエラーが出力されてしまい、コンテナが立ち上がらないというところです。
docker-compose.ymlとDockerfileは下記の通りです。
version: '3.8'
volumes:
mysql_db: {}
services:
phpmyadmin:
image: phpmyadmin
environment:
PMA_HOST: mysql
ports:
- '8002:80'
mysql:
platform: linux/x86_64
image: mysql:5.7
volumes:
- mysql_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '12345678'
ports:
- '3306:3306'
httpd:
build: .
volumes:
- ./htdocs:/var/www/html
ports:
- '8001:80'
FROM php:7.3-apache
RUN docker-php-ext-install pdo_mysql
3.原因と解決方法
M1 Macを使用していることが原因のようで、docker-composer.ymlを下記のように書き換えたところ解決しました。
version: '3.8'
volumes:
mysql_db: {}
services:
phpmyadmin:
image: phpmyadmin
environment:
PMA_HOST: mysql
ports:
- '8002:80'
mysql:
# platform: linux/x86_64
platform: linux/amd64
# image: mysql:5.7
image: mysql/mysql-server:5.7
volumes:
- mysql_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '12345678'
ports:
- '3306:3306'
httpd:
build: .
volumes:
- ./htdocs:/var/www/html
ports:
- '8001:80'
参考書に書いてあった通りやって、うまくいきませんでしたが、同じような悩みがあったので、解決することができました。