docker compose up でつまずいた
Dockerfile NGパターン
FROM mysql:5.7
エラー内容
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
Dockerfileまたはdocker-compose.ymlでplatformを指定する
Dockerfileの場合
FROM --platform=linux/x86_64 mysql:5.7
docker-compose.ymlの場合
mysql:
image: mysql:5.7
platform: linux/x86_64
これで、docker compose upは問題なく通りました。
DBがうまく起動していない
migrateで失敗したため、DBコンテナを調べると以下のようなログが出てMySQLの起動に失敗していました。
[ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_PASSWORD cannot be used for the root user
Use one of the following to control the root user password:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
エラー内容を翻訳すると
MYSQL_PASSWORDはrootユーザーには使用できません
開発環境なので以下のような設定をしていたのがダメになったみたいです...
docker-compose.yml NGパターン
mysql:
build: ./docker/mysql
container_name: "hogehoge-db"
restart: always
environment:
MYSQL_DATABASE: hogehoge-db
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
MYSQL_USERがrootなのが問題なので以下のように修正しました。
docker-compose.yml OKパターン
mysql:
build: ./docker/mysql
container_name: "hogehoge-db"
restart: always
environment:
MYSQL_DATABASE: hogehoge-db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: passw0rd
以前から動いていた設定だったため見つけるまでに時間がかかってしまいました...
初心にかえってログを見る、これ大事。
以上、お疲れ様でした。