Herokuの無料枠がなくなって一年ぐらいになりますが、自分用のサービス(pythonのpyramidフレームワークを使って大昔に作ったもの)をとりあえずrenderに移したあと放置してたものを、再度fly.ioで動くようにしたときの事
fly.io への登録からflyctl launch までは順調に(https://zenn.dev/hokawa/articles/65ddcd9974448c を参考に)。ローカルディレクトリにできたProcfileはherokuに使ったものをそのまま。flyctl deployってgitに関係なくアップロードするんですね。
deployでファイルのアップロード後に泣かされたのは
sqlalchemy.exc.NoSuchModuleError: Can’t load plugin: sqlalchemy.dialects:postgresが出る
https://zenn.dev/3w36zj6/scraps/ebb3a8bf494aa4
この内容を反映させるために、アプリの最初の方で
os.environ['DATABASE_URL'] = os.environ["DATABASE_URL"].replace("postgres://", "postgresql://")
を挿入
もう一点、postgresqlのテーブル作成とデータ挿入をコードからではなく、fly postgres connect -a <postgresqlアプリ名>で接続してSQLを流し込んで行ったのですが、そのテーブルが見つかりません(relation does not exist)エラー
に書かれてる、大文字小文字やサーチパスは問題なかったのですが、
の別のデータベースにテーブルを登録してしまっている。が該当したので、こちらのサイトにはflyctl proxy~なるコマンドが書かれてますが、ここはうまくいかなかったため、普通にfly postgres connectしたあとでpsqlのコマンド\c を使ってデータベースを切り替えたあとで再度SQLを流したところ、うまく動き出しました
あ、あとはrequirement.txtでpsycopg2がうまく入れられなかったのでpsycopg2-binaryに変更したような気がします