今回恐ろしい呪文を使用してしまった出来事。死んだかと思いました。
どんな状況でどう解決したのか。一連の流れを記憶に残しておくためにも記事にしておきたいと思います。
どういう状態だったのか
まず、タイトル記載の呪文を使う前の状況を簡単に説明します。
- ローカル環境では投稿が成功するものの、本番環境で投稿するボタンを押したら遷移先の画面(英語表記)で「このページはない」というような文言が書かれていた
- ターミナルログをみたらカラム10個あるうちの一つしか機能していない状態を確認
- スキーマファイルのテーブルを確認しても問題なさそう
- GPTに質問からの回答Dockerのキャッシュの問題
本題
どうやらDocker環境では、古いコンテナやキャッシュが残っている場合があるため、マイグレーションが正しく反映されないことがあるそうでタイトル記載のコマンドを実行してしまいました。
docker compose down --volumes --remove-orphans
そして、👆コマンドを実行したらローカルがつかなくなりました
なぜなのか。
後から上記コマンドについて検索をかけるおろかな私
バ○スなみの威力を持つ呪文でした
この後どうしたのか1
この後皆さんならどうしますか?(逆に聞きたい)
私は一日悩み>>講師の方に質問>>最終的に自分で解決
私が行ったこと👇滅びの呪文の後から
-
まずはクリーンな状態でコンテナを起動。イメージ構築
docker compose build
-
次にコンテナ構築
docker compose up
ここでエラーがでて、ローカルもつかない状態になりました。
エラー内容は「PostgreSQLデータベースが正しく初期化され、myapp_development
とmyapp_test
というデータベースが作成されましたがjs.1
とcss.1
の行にesbuild: not found
やtailwindcss: not found
というエラーがあります。これは、これらのツールがDocker
コンテナ内にインストールされていない」という事でした
※この後esbuild
とtailwindcss
をDocker
コンテナ内にインストールするため、いろんな?ファイルにコードを追記したり、再度docker compose up
をするものの結果は同じ
この後どうしたのか2
最終的に次の流れで無事解決しました
# 無駄に入力した内容は削除して一応バックアップを取っておく
cp -r . ../myapp_backup(myapp部分は仮)
docker compose build
docker compose run --rm web gem install rails
# esbuildとTailwind CSSのインストール
docker compose run --rm web yarn add esbuild tailwindcss
# Tailwind CSSの初期設定(tailwind.config.jsファイルが生成、既にある場合上書きされない
docker compose run --rm web npx tailwindcss init
# app/assets/stylesheets/application.tailwind.cssファイルの作成(既にあるならとばす)
@tailwind base;
@tailwind components;
@tailwind utilities;
# Procfile.devの確認(esbuildとtailwindcssが監視付きでビルドされる設定があるかどうか)
# 下記のような設定が含まれているか確認
js: yarn build:js --watch
css: yarn build:css --watch
# 最後にコンテナ構築
docker compose up
無事復活しました
👆docker
コマンド再確認
まとめ
無知ほど恐ろしいものはないですね。
講師の方に相談した時、時間の都合上その場で解決には至りませんでしたが「個々の部分調べてみて、試したりしても解決しなかったらまたきてください」という言葉をきいて少し気持ちを立て直すことができました。感謝です。
とりあえず、一安心?
今回の記事が何か参考になれば幸いです。