前回・前々回に引き続き、Bluemixにdiscord botを置いていきます。
今回作成したコードは、後日 github上に公開する予定です。本記事では、メモ程度とさせてください。
1. IBM Bluemixでpythonアプリを作成する。
ダッシュボードを開きます。
pythonアプリを選択します。
2. pythonアプリのサンプルコードを取得
git からサンプルコードを取得
git clone https://github.com/IBM-Bluemix/get-started-python
デフォルトではFlaskが動くようになっているので、いろいろ設定を上書きします。
まず、前編で作ったコードを bot.py として cloneしてきたフォルダにコピー
次に、requirements.txtを記述。pip freezeを使って書く場合
pip freeze -l > requirements.txt
で良いとおもいます。
起動スクリプト run.shを書きます。bash経由で bot.pyを実行するだけです。
#!/bin/bash python bot.py &
discord.pyはpython3.4.2以降による対応なので、pythonのバージョンを指定します。以下のドキュメントが参考になります。
https://console.ng.bluemix.net/docs/runtimes/python/index.html#python_runtime
具体的にはこのように書きます。
python-3.5.1
最後にmanifest.ymlを書きます。
commandでbashを動かし、起動スクリプト run.shを実行させます。
memoryとかはもっと少なくていいかと思います。今回はテストです。
applications: - name: gelebotff14 random-route: true memory: 256M command: bash run.sh path: .
3. cfコマンドをインストール
私の環境にはcfコマンドが入っていませんでした。Bluemixではcfコマンドによるアップロードができるので、cfコマンドをインストールします。
brew tap cloudfoundry/tap brew install cf-cli
4. cfコマンドによるアップロード
まず環境を設定
cf api https://api.ng.bluemix.net cf login
次にアップロードですが、ここを私は迷っています。
とりあえず、以下でアップロードしました。
(gelebotff14はbot名です。任意の名前に変更してください)
cf push gelebotff14 --health-check-type=none
何をしたかというと、health-check-typeをnoneにしました。というのも、この設定なしだと、health-checkで起動失敗するからです。
cfコマンドを入力後
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です 1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です 1 個の中の 1 個のインスタンスが実行中です アプリが開始されました OK
などと表示されたら、起動できているはずです。
botのトークンをローカルで動かした時と同じにしている場合、すでに接続できています。
違うものにする場合、前々回の記事を参考にして、botを再設定してください。
gelehrtecrest.hatenablog.com
予定:
まだかなり理解していない部分があります。もう少し調査します。
そのあと、githubなどにソースコードを公開する予定です。