はじめに
Docker環境で開発中に、コンテナ内で「rails g model ~」や「rails db:migrate」により、テーブルを作成したので、作成したテーブルなどを確認するために、MySQLを起動させようとしたところ、以下のとおり、起動しませんでした。$ mysql -u root -p
bash: mysql: command not found
あれ、MySQL入っているはずなのに、なぜだろう?
開発環境
・Ruby on Rails 6.1.4 ・MySQL 8.0.25 ・Docker 20.10.7 ・docker-compose 1.29.2原因と対応
私はrailsコマンドを使用するために、Dockerをバックグラウンドで起動させた後、次のコマンドによりコンテナに入って作業をしていました。$ docker-compose exec web bash
そうです、webコンテナ(=railsのコンテナ)の中で、mysqlコマンドを実行しようとしていたのです。
気を取り直して、webコンテナからexitし、以下のコマンドを実行します。
$ docker-compose exec db bash
これでdbコンテナ(MySQLのコンテナ)に入ることができ、無事、mysqlコマンドが実行できるようになりました。
もちろん、コンテナに入らずに直接、次のコマンドを入力してもOKです。
(これなら、コマンドにコンテナ名が入っているので、最初から気がついていたような気もしますが…)
$ docker-compose exec db mysql -u root -p