Help us understand the problem. What is going on with this article?

docker-composeで、rails dbconsoleが使えなくてハマった話。

More than 1 year has passed since last update.

Dockerパネェ

みなさん、こんにちは。欅坂46のてちとりさが推しメンの内田です。
2期生の藤吉ちゃんも最近推してます。

DockerとRailsを使って、webサービスを現在作っているんですが、localにrubyやらmysqlやらを入れなくても開発ができちゃうって、なんて素晴らしいんだろっていつも思ってます。ありがとうありがとうm(_ _)m

でもね?

だけどもだっけっd、、
Dockerを使っているととてつもない壁にぶち当たるときが来るんですよ。
それも何度も。

そんなときはやっぱり気が滅入っちゃって、やっぱりローカル環境にruby入れて開発しようかなぁとか思っちゃうんですよ。
いやぁ、まいったなぁって。

そしてハマった

おハマりしました。

$ docker-compose run web rails dbconsole
Couldn't find database client: mysql, mysql5. Check your $PATH and try again. docker

それまで順調に開発していたので、いざ手が止まってしまったら、疲れがブワッと出てきます。
そんなときはYouTubuで欅坂の動画でも見ましょう。

解決策見つかる

ググりにググってやっと見つけたのが、このサイトでした。
docker-composeでRailsの開発環境を作る
この記事を読んで、ふと気づいたことが、

あれ、apt-getのところちょっと違うぞ??ってこと

この方はpostgresql-clientを入れています。
どうやら、mysqlのimageを用意して満足していちゃだめらしいですね。
ごめんなさい:open_hands:

webサーバー側のDockerfileにmysql-clientを入れていないからエラーになっていたんです。
修正したDockerfileはこんな感じ。

FROM ruby:2.6.3
# mysql-clientを入れないと、pathが通らないよって怒られる。
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs mysql-client
RUN mkdir /web
WORKDIR /web
ADD web/Gemfile /web/Gemfile
ADD web/Gemfile.lock /web/Gemfile.lock
RUN bundle install
ADD web /web

そして、もう一度dockerをビルド。

$ docker-compose build

勇気を振り絞って、再挑戦してみましょう。

$ docker-compose run web rails dbconsole

Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.16 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [web_development]> 

動いた:innocent:

これで開発進められるぅぅ!
やったぁぁ!

この記事を読んで、あなたもやっぱDocker最高かよ!っていうことを再確認していただけたら嬉しいです! :whale:

おわり。

ryosk7
マッチングアプリを作ってる人です。 RubyとTypeScriptを書いてます。 Ionicを勉強中です。
https://twitter.com/ryosk7
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away