LoginSignup
0
0

More than 3 years have passed since last update.

新規プロジェクトをrailsで作成中、ズルしたら痛い目にあった

Posted at

ある日

「あー!デプロイまで終わった!」
「次はいよいよ、ポートフォリオ作ってみようかなー!」
「うわ、またあの環境構築からか。。。面倒だなー」
「前に作ったサンプルサプリで設定した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記述が、なぜファイルの中身を生成しなかったのか、まだわかってないので調べます!
分かる方いましたら教えてください!

0
0
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
0
0