0
2

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.

Flask + Cloud Run をDocker環境に構築

Last updated at Posted at 2022-04-30

はじめに

Pythonを使用してCloud Runを利用したい場合、公式のガイドではFlaskを使用しているので、それに従いデプロイするまでの環境をDockerで構築する。

概要

前提条件

GCPにプロジェクトが存在し、Cloud Runが使用できる状態になっている
docker-composeを使用

手順

docker-composeを使用してコンテナを作成する
google-cloud-sdkをインストールして設定する
FlaskアプリケーションをCloud Runにデプロイする

Docker環境構築

Dockerの設定ファイルとrequirements.txtを作成する。
その後、コンテナを作成し起動する。

Dockerfile
FROM python:3.10-slim

ENV PYTHONUNBUFFERED True

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

RUN pip install --no-cache-dir -r requirements.txt

CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
docker-compose.yml
version: '3'
services:
  flask:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    tty: true
requirements.txt
Flask==2.1.0
gunicorn==20.1.0

google-cloud-sdkの設定

起動したコンテナからコマンドを実行してgoogle-cloud-sdkの設定をする。

# sdkのダウンロード
apt-get update
apt-get install curl
cd /tmp
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-381.0.0-linux-x86_64.tar.gz

# sdkのインストール
tar -xvzf google-cloud-sdk-381.0.0-linux-x86_64.tar.gz -C /
cd /
./google-cloud-sdk/install.sh
gcloud auth login --no-launch-browser
gcloud projects list
gcloud config set project <your-project-id>

# 確認
gcloud config configurations list

FlaskアプリケーションをCloud Runにデプロイ

Dockerfileと同じ階層にmain.pyを作成してデプロイする。

main.py
import os

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    name = os.environ.get("NAME", "World")
    return "Hello {}!".format(name)

if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
# デプロイ
gcloud run deploy

表示されたURLにアクセスすると

image.png

Hello World!を確認できた

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?