IBM Cloud環境にPython flaskのアプリをデプロイする手順です。
まずはPython flaskの公式ページからサンプルプログラムを作成して、IBM Cloud Foundryにアップロードしましたがうまくいかず。
日本語のサイト等を見ると、manifest.ymlやらrequirements.txt、setup.pyなどとよく分からないファイルが必要な様子。一日ぐらい試行錯誤しましたがよくわかりません。
知識のないまま真似をして進めるのもどうかと色々情報をあさっていたところ、以下のページに簡単な手順がありました。
参考ページ:Simple hello world python flask app
IBM Cloud Blogと公式ページのようで、ほぼこのままの手順でうまくいきました。
【前提条件】
・IBM Cloudアカウントを取得済みであること
・gitコマンドが利用できるCUI環境があること
・Bluemix CLIがインストール済みであること
【開発環境について】
PC(OS):Windows 10
ソフト:Docker for Windows
コンテナ:Ubuntu:latestベース
私はgitやpython等の環境をWindowsで構築するのが面倒だったため、Docker内にLinux環境を作って作業しています。
IBM・ライトアカウント取得時に組織名などを日本語にしてしまったため、日本語環境を用意してSSH接続(TeraTerm)で作業しました。
(Docker for Windowsはコマンドプロンプトベースのため日本語入力を正しく受け付けてくれないため)
参考記事:DockerToolBoxでPython日本語表示(やや強引)
【Python flaskデプロイ手順】
参考ページにあるとおり、Github上のサンプルコードをデプロイしてみます。
①GitHubからソースコードを取得する
git clone https://github.com/IBM-Bluemix/python-hello-world-flask.git
②フォルダ内に入る
cd python-hello-world-flask
③Bluemixにログインする
bx login -u ユーザ名 -o 組織名 -s スペース名
※ユーザ名、組織名、スペース名はIBM Cloudアカウント作成時のものを使用
※パスワードの入力が必要
※APIエンドポイントの選択が求められた場合、https://api.ng.bluemix.netを選択(一覧になければその他から入力)する
④サンプルコードをIBM Cloud Foundry上にデプロイする
bx app push サービス名 -b python_buildpack -m メモリサイズ
※サービス名は一意(誰かと被っていたらNG)
※メモリサイズは〇〇MB等と設定
⑤ブラウザからデプロイしたコードを確認する
URL:https://サービス名.mybluemix.net/
テキストボックスに入力し、ボタンを押すと次の画面で入力テキストを表示するだけのWEBアプリケーションが動作します。
とりあえずこのサンプルコードをベースにして開発を進めようと思います。
【注意点】
サンプルコードに含まれるファイルについての注意点
(1)requirements.txt
開発で使用したpythonライブラリを記述するため、以下のようにpipからライブラリ一覧をリダイレクトすると楽です。
pip3 freeze -l > requirements.txt
ただし提供されていないライブラリ?なのか一部エラーが発生します。エラーが出るライブラリは不要ならコメントアウトしましょう。必要なものだけ書く方が楽かも知れません。
(2)Procfile
実行するコマンドをここに記述する。
(3)manifest.yml
アプリの情報(使用メモリなど?)を記述する。
(4)setup.py
アプリの情報を記述する。