バックエンドのデプロイ準備:Dockerファイルをつくる
生成AIを使ってゼロからWebサービスをつくる - 山羊の午後
6日目。今日はバックエンドのデプロイ~!と取り掛かりましたが、バックエンドのデプロイ方法をChatGPTに聞いた結果、Dockerを使おう!という結論になり、今日の作業はDockerの勉強とDockerファイルの作成になりました。
Docker、触ったことはあるし、使えるのですが、
アプリのデプロイに向けていちからDockerファイルを書いたことはない、というレベル感です。
今回、Pythonの環境構築をuvでやり、FastAPIのアプリを作成しました。
この条件でDockerファイルを作るぞ~と調べ始めたのですが、
uvの環境をdockerに作るのがやや手間、というか知見が少ない。。。
uv on Docker をやっている
手順通りにやればできるものの、これは初心者にはめんどうだな、という所感。
そこでこうしました。
uvでつくった仮想環境で pip freezeでrequirements.txtをつくり、pipインストールでpython環境が構築できるようにする。
cd backend # uv project フォルダ source .venv/bin/activate pip freeze > requirements.txt
これなら初心者にも安心、な感じです。
続いてDockerファイルを作ります。これも状況を伝えてChatGPTに書かせます。
# ベースイメージ FROM python:3.12-slim # 作業ディレクトリの設定 WORKDIR /app # 必要ファイルのコピー COPY requirements.txt . # 依存関係のインストール RUN pip install --no-cache-dir -r requirements.txt # アプリ全体のコードをコピー COPY . . # ポートの公開 EXPOSE 8000 # 起動コマンド CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
書いてもらったものを読みながら、それぞれ開設してもらう。
そういえばなんで起動はuvicornなんだ?とuvicornとFastAPIの関係性について教えてもらったり。
アプリケーションというのは何層にも処理が重ねられて動いているんだなあ、と感慨深く学びました。
そりゃ、いろいろエラー出るわ。。。と思いながらDockerファイルの書き方を学ぶ。
出来上がったものがローカルで動くことを確認する。
docker build -t app . docker run -p 8000:8000 app
できましたー。
今日はここまで。書くとあっさりしていますが、なかなか大変でした。