0
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?

flaskで作成したwebアプリをCloud Runにデプロイする手順

Last updated at Posted at 2024-08-13

はじめに

Flaskを用いてAPIで取得してきた商品データを一覧表示するだけの簡単なアプリケーションを一旦Cloud Runにデプロイしてみた際の手順を備忘録として徒然なるままにまとめてみた。

追記
アプリケーションの詳細まったく書いてなかったので別記事にでも書こうかなあと思ったり思わなかったり。

アプリケーションのディレクトリ構成

ディレクトリ構成は以下
今後機能を追加していくことを考慮してblueprintを利用

root/
 ├ apps/
 │  ├ list/ 
 │  │   ├ __init__.py
 │  │   ├ models.py 
 │  │   └ views.py
 │  ├ app.py
 │  └ config.py
 ├ migrations/
 ├ venv/
 ├ local.sqlite
 └ requirements.txt

1. requirements.txtの作成

毎回これのやり方を忘れるからいい加減覚えたい。

pip freeze > requirements.txt

2.Dockerfileの作成

rootディレクトリに以下のコマンドでDockerfileを作成
(Windows環境なのでコマンドプロンプトで以下を実行し、空のDockerfileを作成)

type nul > Dockerfile

作成したDockerfileに以下の内容を記述

# ベースイメージを指定
FROM python:3.11

# apt-getのversionを更新してSQLite3をインストール
RUN apt-get update && apt-get install -y sqlite3 && apt-get install -y libsqlite3-dev

# コンテナ上のワーキングディレクトリを指定
WORKDIR /usr/src/

# ディレクトリとファイルのコピー
COPY ./apps /usr/src/apps
COPY ./local.sqlite /usr/src/local.sqlite
COPY ./requirements.txt /usr/src/requirements.txt

# pipのversionの更新
RUN pip install --upgrade pip

# 必要なライブラリをコンテナ内の環境にインストール
RUN pip install -r requirements.txt

# "building..."を表示させる処理
RUN echo "building..."

# 必要な環境変数の設定
ENV FLASK_APP="apps.app:create_app"

EXPOSE 5000

# "docker run"実行時に実行される処理
CMD ["flask", "run", "-h", "0.0.0.0", "--port", "8080"]

環境変数の指定の仕方にお叱りをうけたので修正
- LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 25)

cloud run はport番号8080を指定しないとエラー起きるためflask runコマンド実行時に--port 8080を指定する必要がある

Dockerイメージの作成

毎回Docker Desktopの起動を忘れてエラー生成する自分をどうにかしたい。

docker build . --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Artigact Registryにコンテナイメージをプッシュ

  1. Artigact Registry に新しい Docker リポジトリを作成
    今回はdockerイメージを使うのでrepository-formatにはdockerを指定
gcloud artifacts repositories create REPOSITORY --repository-format=docker \
    --location=asia-northeast1 --description="Docker repository" \
    --project=PROJECT

レポジトリが作成されたかどうかを一応確認

gcloud artifacts repositories list \
    --project=PROJECT

イメージを push または pull する前に、Google Cloud CLI を使用して Artifact Registry に対するリクエストの認証

gcloud auth configure-docker asia-northeast1-docker.pkg.dev

作成したDockerイメージをプッシュ

docker push asia-northeast1-docker.pkg.dev/PROJECT/REPOSITORY/productlist:latest

cloud runにデプロイ

ちょっとめんどかったからコンソール上からデプロイ

無事デプロイ完了

一旦デプロイできたけど、いまいちコンテナイメージとか理解できてないので、少しずつ理解していきたい

参考

0
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
0
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?