モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

Docker内からflask dbでPostgresを使いたいときにエラー

それまでflask-sqlalchemyからSQLite使ってテスト的に動かしていたものを、Postgresに変更しようとしていました。

それ自体は問題なかったのですが、Dockerから使っていてコンテナ内からコマンドで「flask db …」を使おうとすると、エラーが出るようになってしまったのです。


flask dbからPostgresを動かすために「psycopg2」というライブラリが必要とされるらしいのですが、これをビルドする際に必要なライブラリが必要とされていて、そこで引っかかるようでした。
その依存はどこかで自動で入れて欲しい…


なかなか情報がなくて厳しかったのですが、こちらのエントリーが大変参考になりました。

qiita.com

こちらでは

を入れれば大丈夫だったようですが、gccはすでに入っていたのにだめで、エラーでは「clang」がない、と言われたのでこっちを入れることにしました。

Dockerfileでaptでインストールしているところで

apt-get install libpq-dev clang

を追加しました。

その上で「pycopg2」をインストールします。

rye add pcysopg2

して、pyproject.tomlのdependenciesに下記を追加しました。

    "psycopg2>=2.9.9",

これでやっとこDocker内でflask db …でPostgresも触れるようになりました。