2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonのFastAPIをCloudRunにデプロイするときにはまった

Posted at

かなりはまったので、雑にメモする。

環境

  • python3.10.12
  • poetry1.5.1

やりたかったこと

PythonのFastapiで作ったサンプルアプリケーションを、gcpのCloud Runにデプロイしたかった。
以下のようなDockerfileを作った。

# python3.10のイメージをダウンロード
FROM python:3.10.12-slim-bullseye AS base
..
..

FROM base as production
RUN poetry config virtualenvs.in-project false
..
..
# uvicornのサーバーを立ち上げる
CMD poetry run uvicorn app.main:app --host 0.0.0.0 --port $PORT

ローカルでdocker runしたときはこれで問題なくサーバー起動していたし、gcpにアップされたイメージをpullして、docker runしても、問題なくサーバーが起動していた。

実際に起こったこと

Cloud Runにデプロイすると、起動エラーになってしまい、メッセージは指定されたポート番号でサーバーが起動しない、というようなもの

修正した箇所1

なぜだめなのかは正直まだよくわかっていないのだが、サーバー起動時にpoetryを指定するのではなくて、直接uvicornをたたかないとダメっぽい。

CMD uvicorn app.main:app --host 0.0.0.0 --port $PORT # poetry runは不要

修正した箇所2

これは自分のミスで、docker内は自由に使えるのでpoetryが作成する仮想環境はグローバルにいれればよかったのだが、virtualenvs.in--rojectvirtualenvs.createを取り違えており、poetryがグローバルに入っていなかった。

# docker内は自由に使えるのでpoetryが作成する仮想環境はグローバルにいれる
RUN poetry config virtualenvs.create false
2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?