Rails環境をDockerで作ったら躓いた

技術ネタ
この記事は約3分で読めます。

こんばんわ、hisayukiです。
最近なかなか書けなかったので、今日は仕事前に書いちゃいます!

先日Railsに触る機会があり、今までやったことなかったんですが環境を作ることになりました。

まぁ、超メジャーなRailsなので調べればサクッと作れるだろうと思ったのですが・・・w
意外と躓いたので残しておきます(;´∀`)
これやったときから時間が立ちすぎて、何やったか忘れちゃいましたが解決策は覚えてるので・・・w

ぁ、普段からRails使ってらっしゃる方にとっては退屈な記事になります/(^o^)\

スポンサーリンク

やっぱりDockerで

さらっと触るだけならAWSのCloud9という手もあるのですが・・・
せっかくなのでDockerの勉強も含めて、Dockerで環境を作ってみることにしました❗

参考にしたのはコチラ

[Rails] DockerでRails + MySQLの開発環境をつくる手順 - Qiita
※ 2017/11/19 追記dbのdataファイルをマウントするのを忘れていたので追記しました。MacのローカルにRails開発環境作るのがつらくなってきたMacのローカルにRails開発環…

情報も大量にあるので、途中まではサクサクと難なく進んだのですが、プロジェクト作った後にハマる。。。

コンテナ内でrailsコマンドが叩けない

docker-compose run web rails new . --force --database=mysql

// プロジェクトが作成される

docker-compose build
Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"rails\": executable file not found in $PATH": unknown


「なんやこれ・・・・w」


どうやらdocker-composeコマンドから、コンテナ内のrailsコマンドが叩けないっぽい
ここでハマったのはプロジェクト作るコマンドは通ったんですよね・・・

これについてもいろんな情報はあったものの、なかなかうまく行かず・・・

railsコマンドの前にbundle execをつけるとか、Dockerfileの最後にCMD行を追加するとかいろいろ試しました。
ちょっと時間空きすぎて何試したのか忘れてしまいました・・・

ちゃんとその日にブログに書かないとですね。。。。

公式が正義でした

https://docs.docker.com/compose/rails/

結局、Docker公式のサンプルどおりやったらうまくいきました。
MySQLでやりたかったのに対して、これはPostgreSQLですがw

必要だったファイルは4つ

  • Dockerfile
  • docker-compose.yml
  • Gemfile
  • Gemfile.lock
  • entrypoint.sh

公式ではentrypoint.shというシェルを作ってました。
server.pidというファイルを消す必要があるみたいですね。

まとめ

GitHub - mori-hisayuki/rails_docker_sample
Contribute to mori-hisayuki/rails_docker_sample development by creating an account on GitHub.

一応、Githubにアップしましたが今回は公式のサンプルそのまま作っただけなので、少しづつ手を加えていきます。

まずはMySQLに変更するところから・・・w

今回の教訓は、すぐにブログを上げないと
起きたことを忘れる/(^o^)\

今後はすぐ上げるように、というかせめて気づきがあった点のメモくらいはちゃんと残します。

コメント