問題のエラーについて
Docker環境において、Laravel個人アプリをHerokuにデプロイするにあたり、git push heroku mainとすると、以下のエラーが出ました。
ssh: connect to host heroku.com port 22: Operation timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
デプロイのエラー解決について
① heroku上のリモートリポジトリを「ssh」から「https」に変更
git remote -v
を実行して、heroku上のリモートリポジトリがどうなっているのか確認したところ、
heroku ssh://git@heroku.com/[アプリ名].git (fetch)
heroku ssh://git@heroku.com/[アプリ名].git (push)
と「https」ではなく「ssh」がついた状態でした!!
この致命的なミスに気づかないまま、何時間も無駄にしていました。。。
そうか「ssh」から「https」に変えればいいのかと思い、意気揚々と
git remote set-url heroku https://git.heroku.com/[アプリ名].git
として、再度「git remote -v」をしましたが、未だ「ssh」のまま。。。
必死にググっていくと、下記の記事に助けられた!
の通りに、
git config --global --remove-section url.ssh://git@heroku.com/
すると、「ssh」から「https」に変更することができ、デプロイ自体は成功!
② デプロイ後の500エラーがでた!
デプロイ先のURLにアクセスすると500エラーが出ました。 ググってみると、下記の記事に辿り着き、
composer.jsonに.envを読み込む?旨の記述をすると解決するらしく、やってみました。
//以下を最下部に追記
"compile": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
]
ただ、記事にもあるように.envはgitで追跡されてないので、代わりに「.env.sample」を「.env」の内容にコピペして書き換えてから、記事にあるように「composer.json」に追記をしました。(念の為、「.env.sample」のバックアップを取りました。)
その後、ターミナル上でコミットしたのち、再度heroku pushしたところ、500エラーが解消され、サイトが見れるようになりました!
Laravel初心者ですので、分かりにくい部分があれば申し訳ありません!参考になれば幸いです!