.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

IBM Cloud (Bluemix)を使用することにしました。

(残念なことにcfコマンドはラップされている模様ですが、
Open PaaSってそう言うモンかもなぁ。などと考えました。
エンドユーザーからすると何でも良いんですよね。)

サンプル

メモ・アプリ

  • メモを登録・削除できる。
  • Cloudant(CouchDB)に永続化

アーキテクチャ

IBM Cloud (Bluemix)上のアーキテクチャ

・・・

Cloud Foundryのアーキテクチャ

立上

事前に以下を行っておく。

  • IBM Cloud (Bluemix)ポータルにサインアップ(ライト・アカウント)
  • IBM Cloud CLIのインストール(Win版)
  • PowerShell?でインストール
  • cmdで「ibmcloud」が動くか確認
    (別名、ic, bluemix, bxで利用可能)
  • Gitクライアントのインストール

演習

アプリケーションの作成とデプロイ

リソースの作成

  • ポータルにサインインして、「組織」と「スペース」、場所を「米国南部」に設定。
    手順1
  • [アプリの作成]ボタンを押下して、遷移後、[カタログ]のリンクを押下。
  • [Cloud Foundryアプリ]カテゴリの[SDK for Node.js]を押下。
  • アプリ名に「MemoApp?」、ホスト名に他と重複の無い任意の値を入力し[作成]ボタンを押下。
    • ホスト名:daisukenishino とした。
    • 価格プラン:256MB とした。
  • 作成されたアプリの画面に遷移して
    [アプリ URL にアクセス]リンクを押下すると、
    アプリのエンドポイントにアクセスできる。
    手順2

ソースコードの取得

  • 以下のURLでGitクローンする。
    https://github.com/isebm/first-bluemix-application.git
  • Gitクライアント
    >git clone https://github.com/isebm/first-bluemix-application.git
  • TortoiseGit?でもOK
  • first-bluemix-applicationディレクトリ以下にクローンされる。

manifest.ymlの書換

取得したコード内に含まれるmanifest.ymlを書換る。

applications:
- name: MemoApp
disk_quota: 1024M
memory: 256M
host: daisukenishino
domain: mybluemix.net
command: node app.js
path: .
instances: 1

IBM Cloud CLIでデプロイ

  • first-bluemix-applicationディレクトリにcdし、
    >cd ...first-bluemix-application
  • IBM Cloud CLIを利用し、IBM Cloudにログイン
    • 既定の手順でPWDがうまく入力できなかったので、
      以下の参考手順でAPIキーでログインする。
      >bluemix login --apikey <発行したAPIキーのストリング>
    • 組織とスペースを指定する。
      • とあるので、
        >bluemix target -o <組織名> -s <スペース名>
      • と指定した。
        >bluemix target -o daisukenishino77@gmail.com -s dev
  • first-bluemix-applicationディレクトリでapp push
    (cfコマンドがラップされているようで、直接触れない模様)
    >bluemix app push
    'cf push' を起動しています...
  • 失敗したらログ確認(成功してもログ確認)
    >bluemix app logs MemoApp --recent

アプリケーションの動作確認

  • 成功の状態で、
    前述の[アプリ URL にアクセス]リンクを押下すると、
    MemoApp? のエンドポイントにアクセスし動作確認できる。
  • なお、この状態では、
    オンメモリで処理されており、永続化されていないようで、
    ポータルからアプリを再起動すると登録内容がクリアされる。

Cloudant NoSQLサービスの追加

  • 前述のMemoApp?の永続化を可能にする(アプリを再起動しても消えなくなる)。
  • Cloudant NoSQLとは、Apache CouchDBというJSONデータベースをベースとしているらしい。

リソースの作成

  • 前述の手順と同様に、[カタログ]のリンクを押下、
    [データ & 分析]カテゴリの[Cloudant NoSQL DB]を押下。
  • サービス名を「Cloudant NoSQL DB-memo」に変更し[作成]ボタンを押下。

設定のためダッシュボードに遷移

  • そのままCloudant Webコンソールの起動する。
    または、ポータルトップから確認できるリソース一覧から、
    先ほど作成した「Cloudant NoSQL DB-memo」を押下する。
  • 遷移後、[LAUNCH CLOUDANT DASHBOARD]ボタンを押下。

DBの作成

  • [データベースのマーク]ボタンを押下し、[Create Database]ボタンを押下。
  • ポックアップにデータベース名を「memo」と入力し[Create]ボタンを押下。

Viewの作成

Viewとは、Cloudant(CouchDB)の機能らしい。

  • [データベースのマーク]ボタンを押下し、
  • [Design Documents]メニューの「+」ボタンを押下。
  • [New View]を選択し、遷移した画面で、
    • 必要な情報を入力する。
      • Design Document名(_design/):「memos」
      • index name:「list」
      • Map Function:以下のスクリプトを貼り付け。
        function(doc) { 
        var row = { 
        id : doc._id, 
        title : doc.title, 
        updatedAt : doc.updatedAt 
        }; 
        
        emit(doc.updatedAt, row); 
        }
  • 入力完了後、[Create Document and then Build Index]を押下。

Cloudantと連携するよう、アプリケーションを修正

manifest.ymlを修正

manifest.ymlにCloudantのサービス名を追加

services: 
- Cloudant NoSQL DB-memo

パッケージを追加

package.jsonのdependenciesセクションにcradleを追加

"cradle": "~0.6.7" 

ソースコードを修正

「reference/cloudant/memo.js」→「models/memo.js」に置換。

補足説明

...\first-bluemix-application\referenceの、

  • memoryにオリジナル・ファイルが格納されている。
  • cloudantに変更後ファイルが格納されている。

従って、書換ではなく、置換でも良いが、その際は、
ココでの変更内容をマージする必要がある。

アプリケーションの再デプロイ

IBM Cloud CLIで再デプロイ

  • first-bluemix-applicationディレクトリでapp push
    (cfコマンドがラップされているようで、直接触れない模様)
    >bluemix app push
    'cf push' を起動しています...
  • 失敗したらログ確認(成功してもログ確認)
    >bluemix app logs MemoApp --recent

アプリケーションの動作確認

  • 成功の状態で、
    前述の[アプリ URL にアクセス]リンクを押下すると、
    MemoApp? のエンドポイントにアクセスし動作確認できる。
  • これにより、
    • ポータルからアプリを再起動しても登録内容がクリアされなくなる。
    • 以下でデーターベースに永続化されたデータを確認できる。
      手順3

セカンド・ステップ

参考


添付ファイル: file3.png 8件 [詳細] file2.png 9件 [詳細] file1.png 12件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-29 (金) 16:35:56 (85d)