LoginSignup
4
2

More than 1 year has passed since last update.

Docker 環境でrails db:migrateが出来ない件について

Last updated at Posted at 2022-08-26

こんにちは。たにやんです。記事を見ていただきありがとうございます。
初歩的なエラーですがつい先日にも同じエラーでつまづき何回も同じエラーでつまづいては効率が悪いと思い、
記事を書くことにしました。

やりたいこと

プロフィール編集のページを作ろうと思い、usersテーブルに新しくカラムを追加したい。
そこで以下を実行

rails db:migrate

結果

rails aborted!ActiveRecord::DatabaseConnectionError: There is an issue connecting with your hostname: db.

Please check your database configuration and ensure there is a valid connection to your database.


Caused by:
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (8)

毎度おなじみのMysql関連の登場です。とりあえずエラー内容をコピペしてググってみると以下のサイトがヒットしました。

こちらのサイトと同じで自分もローカル環境でコマンドを叩いていたためエラーが起こっていると判断。
そこで次はdocker環境上で

docker-compose exec web rails db:migrate

とし、これで解決!と思いきや。。。
 

OCI runtime exec failed: exec failed: unable to start container process: exec: "rails": executable file not found in $PATH: unknown

また違うエラーが発生しました。ナニコレ?

とりあえず落ち着いて再度ググってみることに。すると

似たようなサイトがありました。こちらのサイトによるとrailsコマンドの前にはbundle execコマンドを付けるとのこと。
そうやったっけ?

そこで

docker-compose exec web bundle exec rails db:migrate

とすると

ERROR: No such service: bundle

またか。笑
さて腐らずググり倒してやりましょう!!

自分のdocker-compose.ymlの設定を見てみると

docker-compose.yml(一部抜粋)
services:
  app:
    build:
      context: .
# =========ローカルと本番切り替え===========
    #command: bundle exec puma -C config/puma.rb -e production
    command: bundle exec puma -C config/puma.rb
# ======================================

そもそもサービス名はwebではなくappでした。

そこで次は

docker-compose exec app bundle exec rails db:migrate

これでどうや!!
ハイ、無事に追加したカラムを更新することが出来ました。
bundle execって何気に使っているけど今度ちゃんと調べてまた記事にしよかな。

4
2
1

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
4
2