LoginSignup
2
1

More than 1 year has passed since last update.

Dockerコンテナ内でmysqlコマンドが使えなかったときの話

Posted at

はじめに

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

おわりに

原因がわかれば何とも単純な話ですが、エラーが出るとあれこれ調べて、よくわからない方向へ行ってしまい、いつの間にか時間ばかりが過ぎているというのは、初心者あるあるかと思います。
同じことをやらかしてしまった人が、この記事にたどり着いてくれれば、嬉しく思います。

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