Herokuに関してはネット上に色々と情報があったのですが、IBM Cloudに関してはほとんど情報なく困っていました。
限られた情報で試行錯誤しながらデプロイしてみたところ結果的にHerokuより簡単で驚いたので共有したいと思います。
IBM Cloudは他の方法でもウェブアプリを作れるようなのですが、試してみたところピンと来たのがこのIBM Cloud Foundryだったのでもっと良い方法がある場合は教えていただければと思います。
GitやDockerは使わずにIBM Cloud CLIの操作だけでwebアプリ公開ができました。
はじめに
今回開発に至っては、基本的にこちらの情報を参考にさせていただきました。本当に感謝です。
本記事で使用した環境は以下の通りです。
MacOS Monetrey v12.2.1
Python 3.9.6
流れとしては、以下のステップを踏みます。
- IBM Cloudでアカウントを作る。
- IBM Cloud CLIをインストールする。
- 自分のプログラムをPushする。
IBM Cloudアカウント作成
まずは、アカウントを作成してください。ここでつまづくことはないと思うので割愛します。
IBM Cloud Foundryでの設定
ログインしたらIBM Cloud Foundryを選択して以下から作成をしてください。
料金プランは無料を選んでいます。ロケーションに日本はないと思うのでシドニーなど任意の国を選んでください。
この記事はPythonアプリなのでリソースの構成はPythonを選びます。
ページの下の方に組織名とスペース名が書いてあると思うのでロケーションと併せて覚えておいてください。
IBM Cloud CLIの設定で使用します。
IBM Cloud CLIのインストールと設定
以下のインストラクションに則ってインストールしてください。
マイクロサービスであればスタンドアロンタイプで問題ないです。
Macであれば以下のコマンドをターミナルに入れていただければすぐにインストールが開始します。
それ以下も色々と書いていますが、操作はこれだけで問題ないと思います。
curl -fsSL https://clis.cloud.ibm.com/install/osx | sh
その後ロケーションと組織、スペースを登録が登録されていないと表示されますので、指定のコマンドを打って登録します。
ロケーションはIBM Cloud Foundry設定時に決めたところにしましたが、日本でも大丈夫なのかなと思います。
ご心配でしたら登録内容と合わせて設定してみてください。(すみません・・・)
ローカル環境でのフォルダ準備
任意のフォルダを作成してターミナル上で移動します。(<>を外して入力)
cd <任意のフォルダ>
mkdirでフォルダを作ってもらってもOKです。(<>を外して入力)
mkdir <任意のフォルダ名>
そのフォルダ内に以下4つのファイルを揃えてください。これが最小限なのかと思います。
- name.py (プログラム本体。nameは任意の名前に変更してください。)
- requirements.txt (必要なモジュール。バージョンを書かなくても動きます。)
- Procfile (拡張子なし)
- manifest.yml (下記参照)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
from os.path import join, dirname
#中略 ご自身のFlaskアプリを記入ください。Flaskなど必要なモジュールも追加してみてください。
#別のHTMLをご用意する場合は、render_templateなどご記入ください。参照記事に詳しく書いてあります。
port = os.getenv('VCAP_APP_PORT', '8000')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(port), debug=True)
以下一例です。cloudantは参照した記事の通り残しているのですが、無くても動くと思います。
Flask>=1.0.0
cloudant==2.13.0
flask
pandas
以下Procfile。name.pyは仮ですので、ご自身のプログラム名を入れてください。
web: python name.py
---
applications:
- name: <任意の名前。プログラム名とは異なってOKです。(カッコは取ってください。)>
random-route: true
memory: 128M
デプロイ
参照した記事ではcf pushのみとなっていますがコマンドが変わっているようです。
ただこれをするだけでデプロイ完了です。(以下ターミナル)
ブラウザ上でログインしてダッシュボードから作成したアプリを探すとURLが見つかりますのでそこから飛んでみてください。
ibmcloud cf push