LoginSignup
2
1

More than 3 years have passed since last update.

この記事は、求ム!Pythonを使ってAzureで開発する時のTips!【PR】日本マイクロソフト Advent Calendar 2020 の 9 日目です(後から追っかけで書いています)。


Flask を Cloud Nativeアプリケーション にするって話です。

※ Cloud Nativeアプリケーション開発のTips! でもあるのですが、Qiita の仕様で、いずれか一つの Advent Calendar にしか参加できないようなので、Pythonを使ってAzureで開発する時のTips!に参加しています。

What is Flask?

Flaskは、Python 用のウェブアプリケーションフレームワークです。

How to make Flask a Cloud Native application?

Flask を Cloud Nativeアプリケーション にする手順は簡単で、以下になります。

  1. Flask で Webサイトを作成する
  2. Dockerfile を作成する
  3. Docker イメージをビルドする
  4. Docker イメージを公開する
  5. Docker イメージを使用して、Azure Web Apps を作成する

以下に 実行コマンド例を記載します。

1. Flask で Webサイトを作成する

$ mkdir flaskwebapps
$ cd flaskwebapps
$ touch app.py
$ touch requirements.txt

app.py を VS Code などのお好みのエディタで開き、以下のコードを追記します。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Flask!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

requirements.txt を VS Code などのお好みのエディタで開き、以下のコードを追記します。

Flask

2. Dockerfile を作成する

$ touch Dockerfile

Dockerfile を VS Code などのお好みのエディタで開き、以下のコードを追記します。

FROM python:3.8

RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN pip install -r requirements.txt

EXPOSE 5000
CMD ["python", "/code/app.py"]

3. Docker イメージをビルドする

$ docker build -f Dockerfile -t flaskwebapps:latest .

4. Docker イメージを公開する

Azure Container Registry(以下ACR) や Docker Hub などに Docker イメージを公開します。

以下では、Azure CLI で ACR に公開するイメージを登録しています。

$ az acr create --resource-group [リソースグループ名] --name [ACR 名] --sku [好きなの選択] --admin-enabled true --location [リソースグループと同じ場所]
$ docker tag [タグ] [イメージ名]
$ az acr login --name [ACR 名]
$ docker push [イメージ名]

5. Docker イメージを使用して、Azure Web Apps を作成する

まず、Azure CLI で App Service Plan を作成します。

$ az appservice plan create --resource-group [リソースグループ名] --name [App Service Plan 名] --sku [B1とかS1とか指定] --location [リソースグループと同じ場所] --is-linux

Azure CLI で App Service Plan と ACR の Docker Image をパラメーターに指定して App Service を作成する

$ az webapp create --resource-group [リソースグループ名] --plan [App Service Plan名] --name [App Service 名] --deployment-container-image-name [イメージ名]

次に、Azure CLI で App Service と ACR を関連づけます。

$ az webapp config container set --name [App Service 名] --resource-group [リソースグループ名] --docker-custom-image-name [イメージ名] --docker-registry-server-url [ACR の場所] --docker-registry-server-user [ACR 名] --docker-registry-server-password [ACR の Password]

次に、Azure CLI で App Service に CD を設定します。

$ az webapp deployment container config --resource-group [リソースグループ名] --name [App Service 名] --enable-cd true

続いて、Azure CLI で ACR に Webhook を設定します。

$ az acr webhook create --name [App Service 名] --resource-group [リソースグループ名] --scope [ACR の名とタグから場所を引いたもの] --location [リソースグループと同じ場所] --uri [URI] --actions push delete
2
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
2
1