LoginSignup
0
0

More than 5 years have passed since last update.

Azure Web AppでFlask使ってみようとしたが失敗した話(Dockerに至るまで)

Last updated at Posted at 2018-08-03

はじめに

APIを経由するだけのサーバープログラム的なやつが欲しいなーと思ってみたが、IaaSでWebサーバーのインフラ用意するのは面倒だし、PaaSで環境を用意してみようと思いました。

が、結局は普通のWebAppではうまくいかず、Docker使っちゃった的な失敗ネタです。

なんでAzure?

AmazonならElasticBeanstalk・・・・ちょっと見てみたら設定がややこしくEC2で環境作ったほうが簡単そうで本末転倒感もありやめました。
GoogleはAppEngineは色々苦い思い出がありプログラム的にPython3が使えないのがつらい
AzureのWebAppは5ステップくらいの操作でWebサーバー用意できるのがいいと思いました。

なんでPython?なんでFlask?

ちょっとした文字処理するプログラムなので、学習コストの低めなPythonにしました。
高機能なWebサーバーになるわけでもないのでDjangoは機能多すぎだし
Bottleと悩んだがFlaskのマイクロサービスの流行りに乗ってみたいシンプルにも作れるしライブラリとかで拡張できるのがいいと思いました。

環境

  • Azure:Web App
  • Python:3.7.0

ローカル環境の準備

仮想環境の作成

以下のコマンドを入力

python3 -m venv env

Flaskで使う専用環境ができました。

(参考)仮想環境で作業するためのコマンド

.\env\Scripts\activate

が、自分はVisualStudioCodeで開発していて、バージョン切り替え機能を使ったので上記はやってませーん

Flaskインストール

以下のコマンドを入力

pip install flask

ローカルで実行

Hello World的なものを書いてmain.pyで保存してみた。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
  return 'Hello, World!'

if __name__ == '__main__':
  app.run()

Flaskのローカル環境を実行してみる。
スクリーンショット 2018-08-03 18.05.59.png

想定通り

Azure環境の準備 

WebAppの用意

なんとなく、Azure Cloud Shell使いました。
起動方法がこちら
スクリーンショット 2018-08-03 20.15.27.png

WebApp作成までに実行したコマンドです

#デプロイユーザー名とパスワード
az webapp deployment user set --user-name <ユーザー名> -password  <パスワード>

#リソースグループ
az group create --name <リソースグループ名> --location "<ロケーション>"

#プラン名作成
az appservice plan create --name <プラン名> --resource-group <リソースグループ名> --sku FREE

#Webアプリ作成
az webapp create --resource-group <リソースグループ名> --plan <プラン名> --name <Webアプリ名> --runtime "python|3.4" --deployment-local-git

アクセスしてみました。
スクリーンショット 2018-08-03 18.06.19.png

順調順調♪

Azure Web Appへデプロイ

gitにて以下のコマンドを実施

git remote add azure https://<デプロイユーザー名>@<Webアプリ名>.scm.azurewebsites.net:443/<Webアプリ名>.git

AzureWebAppへデプロイ後。
スクリーンショット 2018-08-03 18.06.19.png

あれ・・・・?動いてない?

こうなるはずだったんだが。。。。。
スクリーンショット 2018-08-03 18.15.25.png

なぜ動いてくれないか確認してみた

Azureで用意しているコンソールに接続してみたが、ローカルとWebAppのファイル構成がなんか違う。。。
自分の開発環境がMacでWebAppがWindows2012ベースだから?と思ってみたりもしたが、割と普通のWebAppではPythonのライブラリインストールできない問題もあったり、そもそも・・・・

Python3.6.4までしかサポートしてないやん

スクリーンショット 2018-08-03 20.30.09.png

あ、、、、自分の環境は3.7.0

WebAppでPython使う場合、デフォのバージョンがPython3.4らしく、それ以外は色々カスタマイズが必要のようで、結局設定が面倒だなーと悶々としながらぐぐっていたら

Web App for Containers!?

Dockerを動かせるWeb Appらしいが、Dockerなのに仮想マシンいらないの?
だし、環境はコンテナ化されていて、なんかいいとこ取り感もあって、期待してみたが力尽きたので次回書きます。

参考文献

https://microsoftou.com/azure-flask/#toc6
https://qiita.com/ShikaTech/items/8217eded8bf757847b53

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