Docker での SMS Gateway のデプロイ

オンプレミス環境の独自の Docker Engine で SMS Gateway をデプロイするには、以下の手順に従います。 クラウドのデプロイメントについては、IBM Cloud Kubernetes Service 内の Kubernetes への SMS Gateway のデプロイを参照してください。

始めに

SMS Gateway のデプロイ

  1. Docker Machine のみ: Docker にログインするには、その前に、コマンド・ラインから以下のコマンドを実行して、Docker Engine を指すようにシェルを設定します。

    Windows:

    @FOR /f "tokens=*" %i IN ('docker-machine env default --shell cmd') DO @%i
    

    UNIX および Mac OS X:

    eval "$(docker-machine env default)"
    
  2. SMS Gateway のデプロイ元にするディレクトリーに移動し、以下のように最新の Docker イメージをプルします。

    docker pull ibmcom/voice-gateway-sms:latest
    
  3. マシン上の sample.voice.gateway リポジトリーを複製したディレクトリーに移動し、sms/docker ディレクトリーを開きます。このディレクトリーには、サンプル docker-compose.yml 構成ファイルが入っています。

    サンプル・ファイルは、最小限の構成を使用して事前構成されており、最新のイメージが指定されています。 すべての変数の完全なリストについては、『SMS Gateway の構成環境変数』を参照してください。

  4. Docker イメージをプルしたディレクトリーにサンプル・ファイルをコピーします。
  5. ファイルを変更し、Watson Assistant、SMS プロバイダー、およびテナント電話番号を構成します。

    • Watson Assistant について、サービス資格情報およびワークスペース ID を指定します。 サービス資格情報の検索方法については、「Service credentials for Watson services」を参照してください。

      ヒント: Watson Assistant ワークスペース ID を見つけるには、Watson Assistant ツール内の「ワークスペース」ビューに移動します。 統合するワークスペース上で、「アクション」アイコン () をクリックし、「詳細の表示」を選択します。

      例:

      environment:
       - WATSON_CONVERSATION_URL=https://gateway.watsonplatform.net/conversation/api/
       - WATSON_CONVERSATION_USERNAME=9h7f54cb-d9ed-46b3-8492-e9a9bf555021
       - WATSON_CONVERSATION_PASSWORD=InWtiUpYhF1Z
       - WATSON_CONVERSATION_WORKSPACE_ID=a23de67h-e527-40d5-a867-5c0ce9e72d0d
      
    • SMS プロバイダーについて、API URL およびログイン資格情報を指定します。

      ユーザー名はアカウント SID にマップされ、パスワードは認証トークンにマップされます。 これらの値は両方ともご使用の SMS プロバイダー用のコンソールで確認できます。

      例:

        - SMS_PROVIDER_URL=https://api.twilio.com
        - SMS_PROVIDER_USERNAME=A23de67h0236e5e7c7f1ead4499h7f54cb
        - SMS_PROVIDER_PASSWORD=9h7f54cb3b1d3736e19ac64aa23de67h
      
    • テナント電話番号について、SMS プロバイダーからの完全な電話番号を指定します。 SMS プロバイダーで必要とされるとおりの番号フォーマットを使用します。 例えば、Twilio 電話番号を指定する場合、正符号 (+) と国別コードおよび市外局番を含めます。 RestcommONE の場合は、正符号 (+) を入れないでください。

      例:

       - TENANT_PHONE_NUMBER=+12345556789
      
    • オプション: ユーザーが SMS メッセージをゲートウェイに送信して SMS セッションを作成できるようにする場合は、ALLOW_SESSION_CREATE_VIA_SMStrue に設定します。 デフォルトでは、SMS セッションは、REST API を使用することでのみ作成できます。

      例:

        - ALLOW_SESSION_CREATE_VIA_SMS=true
      
  6. docker-compose.yml ファイルを変更したディレクトリー内に .env ファイルを作成し、EXTERNAL_IP 変数を設定します。 以下のコマンドでは編集に vi を使用することを想定していますが、任意のエディターを使用できます。

    ほとんどの Docker インストール済み環境では、設定する IP アドレスはローカル・システムの IP です。 仮想マシンでコンテナーを実行する Docker Machine の場合、docker-machine ip コマンドを実行することによって、VM の IP アドレスを判別してください。

    1. 以下のコマンドを入力して、.env ファイルを作成し、編集するために開きます。
      touch .env
      vi .env
      
    2. i を入力して編集モードに切り替えます。 .env ファイルの先頭に以下の行を追加します。

      EXTERNAL_IP=<IP address of local system or Docker Machine VM>
      
    3. Esc キーを押して編集モードを終了し、:wq と入力してエディターを終了します。
  7. 以下のコマンドを実行して、コンテナーを作成して開始します。

    docker-compose up
    

    コンテナーを開始すると、SMS Gateway サーバーのデプロイ中に多数のメッセージが表示されます。

    ヒント:

    • docker-compose コマンドがない場合は、Docker Compose をインストールする必要があります。
    • コンテナーの開始時に grpc: the connection is unavailable エラーが表示された場合、Docker デーモンを再始動し、コマンドを再試行します。
    • 開始時に以下のエラーが表示された場合、恐らく、別のアプリケーションが指定ポートを listen しています。 競合しているアプリケーションをシャットダウンし、コマンドを再試行します。
      Bind for 0.0.0.0:9080 failed: port is already allocated
      

次の作業

Docker に SMS Gateway をデプロイした後に、Web フックをセットアップし、デプロイメントをテストします (『SMS Gateway の開始』の説明を参照)。

docker-compose.yml ファイルを編集して構成変数を追加または変更した後、コンテナーを再デプロイすることにより、SMS Gateway デプロイメントをさらに構成できます。

SMS Gateway の再デプロイ

  1. 実行中の SMS Gateway コンテナーを停止します。

    docker stop
    
  2. コンテナーを削除します。

    docker rm vgw-sms-gateway
    
  3. 構成の更新を行った後に、コンテナーを再度作成して開始します。

    docker-compose up