😽

Docker Composeでデータベースが作成されない

2023/12/23に公開

はじめに

最近FastAPIの勉強を始めたのですが、Docker周りでこけたので解決法をまとめます

問題

docker compose up
↓
docker compose exec db mysql hoge
↓
ERROR 1049 (42000): Unknown database 'hoge'

以下の構成で docker compose up を実行しましたが、 hoge データベースが作成されませんでした。

docker-compose.yml
services:
  # ... (FastAPIのサービス設定)
  db:
    image: mysql:8.0
    platform: linux/arm64
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      MYSQL_DATABASE: "hoge"  # ここで 'hoge' データベースを指定
      TZ: "Asia/Tokyo"
    volumes:
      - mysql_data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 3306:3306
volumes:
  mysql_data:

解決方法

# -v オプションでコンテナだけでなくボリュームも削除する
docker compose down -v

# 新しい環境でDocker Composeが再起動
docker compose up

おわりに

最初の docker compose up 実行時にシンタックスエラーを起こしたのですが、その影響でコンテナやボリュームが意図しない形で作成された事が原因なのかなと思ってます。

参考

Discussion