0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsでのRailsテストDBエラーを解決する方法

Posted at

Rails × Docker × GitHub Actionsを使ってCI環境を整えていると、以下のようなエラーに直面することがあります。

❌ エラー内容

CI実行時に以下のようなMySQL接続エラーが発生:

Error 115: Can't connect to MySQL server on 'db' (115)

これはRailsがCI環境上でMySQLに接続できていないことを意味しています。原因は複数あるので、段階的に確認していきましょう。

✅ 解決法1:環境変数の不一致をチェック!

.env や compose.ymlconfig/database.yml.github/workflows/ci.yml などで使用しているMySQLのパスワードが一致しているか?を確認しましょう。

例:

.env

MYSQL_ROOT_PASSWORD=パスワード

database.yml

# database.yml
password: <%= ENV['MYSQL_ROOT_PASSWORD'] %>

docker-compose.yml

# docker-compose.yml
environment:
  MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

ci.yml

# ci.yml
env:
   MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }}

ci.ymlのMYSQL_ROOT_PASSWORDの値はGitHub Secretsで登録しておきましょう。

重要: これらは1文字でも違うと接続できません!

✅ 解決法2:環境変数の $ 記述ミスに注意

以下のように、環境変数の記載に $ だけを置いてしまうとエラーになります。

# compose.yml

# ❌ 誤り
MYSQL_ROOT_PASSWORD: $

# ✅ 正しい書き方
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD

また、.env ファイル側に定義されている値を忘れずに追記しておきましょう。

✅ 解決法3:Dockerのキャッシュを削除する

構成ファイルを修正しても、Dockerが古いキャッシュを使っていると変更が反映されない場合があります。

その場合は、一度キャッシュを破棄してから再ビルドしましょう:

docker-compose down
docker-compose build --no-cache
docker-compose up -d
docker-compose ps  # ← 立ち上がってるか確認

特に「一瞬立ち上がってすぐ落ちる」場合は、キャッシュの影響を疑いましょう。

✅ 補足:テストDBのホスト切り替え

config/database.ymltest: 環境において、CI環境とローカル環境でDBホストを切り替えたいときは以下のように書くと便利です:

# database.yml
test:
  host: <%= ENV['DB_HOST'] || 'db' %>

そして、.github/workflows/ci.yml に以下を追記:

# ci.yml
env:
  DB_HOST: 127.0.0.1

こうすることで:
• CI環境では 127.0.0.1 を使用
• ローカルでは db コンテナを使用

という切り替えが自動的に行われます。

📝 まとめ

環境変数の不一致

→.env / compose.yml / database.yml / ci.yml をチェック

$ の書き間違い

→$ENV_NAME 形式で明示的に記述

Dockerキャッシュ

→--no-cache で再ビルドする

ホスト切り替え

→`ENV[‘DB_HOST’]

🔐 セキュリティ面の注意

.envファイルにはパスワード等の機密情報を含むため、.gitignoreに追加してGitHubにアップロードしないように注意しましょう!

# gitignore
.env

🚀 おわりに

CIトラブルは環境差異に起因することが多いです。焦らず一つずつチェックして、確実に動作確認を取っていきましょう!

普段の勉強記録や日々の学びはこちらのはてなブログで投稿しています。
技術の基礎から実践まで、わかりやすくまとめているのでぜひチェックしてみてください!

▶︎はてなブログ:育児パパエンジニアの勉強記録
https://taaa-0991.hatenablog.com/

ご質問・ご指摘があれば、コメントやXでお気軽にどうぞ!
👉[@taaa_099]( https://x.com/taaa_099 )

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?