ある日
「あー!デプロイまで終わった!」
「次はいよいよ、ポートフォリオ作ってみようかなー!」
「うわ、またあの環境構築からか。。。面倒だなー」
「前に作ったサンプルサプリで設定したdocker-composeとか使おうかな。」
。。。。
「おおー、docker-compose build 、up、rails newまで早いな!」
「よしこのまま一回localhost接続みてみるかー。。ぽちぽちっと」
「あれ?エラーか。なんでだろ?」
「前みたいな設定にしてるはずだけど、何が違うんだろ??」
「あれ、publicの中身ないぞ!tmpも空っぽだ!これじゃnginxソケット通信できないぞ!どうしよーー」
「はぁ、諦めて一から環境構築するかああ。」
何が問題だったのか?
1:無闇やたらにVOLUME使っていた。
2:初期ページのまま、production環境でlocalhost接続していた!
こんなこと普通ならないですよねー。笑
なぜこうなったかというと
- rails環境構築を省こうとした。
- 楽をしたかった。
この2点だけでした!
今回はrailsの復習にもなりましたので、ここに記事を残して2度と同じミスがないようにしようと思っています!
では、本編どうぞー。
1:無闇やたらにVOLUME使っていた。
このように、以前に作成したことがあったプロジェクトからrailsのdockerfile
docker-compose.yml
nginxのdockerfile
をコピペして使用したのですが、
VOLEME public
VOLUME tmp
がrailsのdockerfileに記述したままでして、
結果rails new
しても、publicとtmpの中身が生成されなかったです。
docker-composeは起動していましたが、localhost
に接続してもnginxが参照するsocketsはないし、welcomepageはそもそもないし。で、、
そりゃエラーですよね!笑
解決方法
VOLEME public
VOLUME tmp
railsのdockerfileから記述を削除し、
docker-compose build
をやり直した所、無事解決にいたりlocalhost
接続できました。
[image:26B581B4-1DFB-4C9D-97FE-8BE8016A13BF-12763-00005F9EE8A93718/yay.png]
初期ページのまま、production環境でlocalhost接続していた!
これは、誠にお恥ずかしい話ですが
developmentモードでwelcomeページが表示されたので、productionモードでも起動確認がしたくなり、初期ページのままいじってました。
当然docker-compose up
してもlocalhost
にwelcomeページなんか出ないはずなのに(welcomepageがあるのはdevelopmentモードのみ!)
あれ?出ないなぁと思っていました!
解決策
サンプルページを作成
docker-compose run app bash rails g controller home index
接続を確認
localhost
で無事表示される。
疑問点
dockerfileのVOLEME public
VOLUME tmp
記述が、なぜファイルの中身を生成しなかったのか、まだわかってないので調べます!
分かる方いましたら教えてください!