こんばんわ、hisayukiです。
最近なかなか書けなかったので、今日は仕事前に書いちゃいます!
先日Railsに触る機会があり、今までやったことなかったんですが環境を作ることになりました。
まぁ、超メジャーなRailsなので調べればサクッと作れるだろうと思ったのですが・・・w
意外と躓いたので残しておきます(;´∀`)
これやったときから時間が立ちすぎて、何やったか忘れちゃいましたが解決策は覚えてるので・・・w
ぁ、普段からRails使ってらっしゃる方にとっては退屈な記事になります/(^o^)\
やっぱりDockerで
さらっと触るだけならAWSのCloud9という手もあるのですが・・・
せっかくなのでDockerの勉強も含めて、Dockerで環境を作ってみることにしました❗
参考にしたのはコチラ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JTVCUmFpbHMlNUQlMjBEb2NrZXIlRTMlODElQTdSYWlscyUyMCUyQiUyME15U1FMJUUzJTgxJUFFJUU5JTk2JThCJUU3JTk5JUJBJUU3JTkyJUIwJUU1JUEyJTgzJUUzJTgyJTkyJUUzJTgxJUE0JUUzJTgxJThGJUUzJTgyJThCJUU2JTg5JThCJUU5JUEwJTg2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz03Mjg0NmFkM2Q2MjhiYWRlZWE2MzEzNTUwMzUzYTc2Mg&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBqc2hpbWF6dSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjI4ZmE4MTg2NTkwMWY0OTU4NjdmYTNkMmU0ODYxOTk&blend-x=142&blend-y=486&blend-mode=normal&s=e04f6f6d8984b7e438d480e190755ef5)
情報も大量にあるので、途中まではサクサクと難なく進んだのですが、プロジェクト作った後にハマる。。。
コンテナ内で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/assets/images/thumbnail.webp)
結局、Docker公式のサンプルどおりやったらうまくいきました。
MySQLでやりたかったのに対して、これはPostgreSQLですがw
必要だったファイルは4つ
- Dockerfile
- docker-compose.yml
Gemfile
Gemfile
.lock- entrypoint.sh
公式ではentrypoint.shというシェルを作ってました。
server.pidというファイルを消す必要があるみたいですね。
まとめ
一応、Githubにアップしましたが今回は公式のサンプルそのまま作っただけなので、少しづつ手を加えていきます。
まずはMySQLに変更するところから・・・w
今回の教訓は、すぐにブログを上げないと
起きたことを忘れる/(^o^)\
今後はすぐ上げるように、というかせめて気づきがあった点のメモくらいはちゃんと残します。
コメント