1
1

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.

FastAPIのコンテナイメージをAppRunnerにデプロイする

Posted at

概要

FastAPIのコンテナイメージをAppRunnerにデプロイしてみたのだが、案外簡単だったので振り返りがてら記事を書いてみます!
個人

実行環境

docker --version
> Docker version 24.0.5,
poetry --version
> Poetry (version 1.5.1)
aws --version
> aws-cli/2.13.5 Python/3.11.4 Darwin/22.1.0 source/arm64 prompt/off

FastAPIコンテナイメージの作成

ライブラリのインストール

poetry init
poetry add fastapi uvicorn

pyproject.tomlとpoetry.lockが生成されます

pyproject.toml
[tool.poetry]
name = "fastapi-apprunner"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = []

[tool.poetry.dependencies]
python = "^3.11"
fastapi = "^0.101.0"
uvicorn = "^0.23.2"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

動作ファイルの作成

app/main.py
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_main():
    return {"msg": "Hello World"}

Dockerfileの作成

# AppRunnerが対応しているPlatformを明示的に指定する
FROM --platform=linux/x86_64 python:3.11

WORKDIR /app

COPY pyproject.toml poetry.lock main.py /app/

# 必要なシステムパッケージをインストール
RUN apt-get update && apt-get install -y curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Poetryをダウンロードしてインストール
RUN curl -sSL https://install.python-poetry.org | python -

# Pathを通す
ENV PATH /root/.local/bin:$PATH
# 仮想環境をたてない
RUN poetry config virtualenvs.create false

## アプリケーションの依存関係をインストール
RUN poetry install

EXPOSE 8080

CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8080"]

動作確認

docker build -t fastapi-apprunner .  
docker run -d --name fastapi-apprunner -p 8080:8080 fastapi-apprunner

※ M1 Macを使用していると警告が出る。こちらは指定したplatformが異なるため出ている。

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

疎通確認

curl localhost:8080 
> {"msg":"Hello World"}

ECRにpush

リポジトリを作成

image.png

ECRにpush

プッシュコマンドの表示に記載されているコマンド通りにCLI上でコマンドを実行
image.png

pushできるとdashboardにimageが表示される
image.png

AppRunnerへデプロイ

コンテナイメージのURIに先ほど作成したECRに登録されているイメージを指定する
image.png

ポートは8080
image.png

あとはデフォルトのままで作成とデプロイボタンをポチッと押すと...

image.png

デプロイ中表示がされて...
image.png

数分後にデプロイが無事完了します!

払い出されたデフォルトドメインにアクセスすると、サンプルコードで定義したリクエスト結果が返ってきます!
image.png

かなり簡単にコンテナイメージがデプロイできてしまってびっくり!
皆さんもAppRunnerをぜひ使ってみてください!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?