Skip to main content

 

アプリケーションライフサイクルを管理する

 

OutSystems

アプリケーションをDockerコンテナにデプロイする

まずはじめに以下の条件を確認してください。

以下のセクションでは、Dockerコンテナホスティングテクノロジーの使用に関する具体的な情報とDockerコンテナへのアプリケーションのパブリッシュに関する詳細手順を紹介します。

Dockerコンテナとデータを共有する

Dockerコンテナで動作するOutSystemsアプリケーションは、コンテナの外部から構成や環境キーなどの情報を読み取るためにボリュームを使用します。これにより、コンテナ内部で動作するアプリケーションがDockerイメージを新規作成することなくランタイムの動作を変更できます。

このように、構成用(<host_configs_folder>)と環境キー用(<host_secrets_folder>)の2つのフォルダが必要です。これらのフォルダは、Dockerが実行されるPC上の任意の場所に配置することや、Docker Engineがアクセスできる場所であれば別のPC上に配置することができます。これらのフォルダはコンテナ内部のフォルダにマッピングされます。フォルダ<host_configs_folder>はコンテナのフォルダc:\configsにマッピングされ、フォルダ<host_secrets_folder>はコンテナのフォルダc:\secretsにマッピングされます。

以下に示すDockerコンテナへのアプリケーションのデプロイプロセスの説明では、説明を簡単にするため、これらのフォルダがコンテナホストPC上にあることを前提にしています。

構成フォルダ

構成フォルダにマウントしたボリュームを指定することで、OutSystemsアプリケーションの設定を変更でき、Dockerイメージを新規作成する必要がありません。

OutSystemsアプリケーションの設定を変更するには、マッピングされているフォルダ<host_configs_folder>更新済み構成ファイルを配置します。すると、アプリケーションが新しい設定を自動的に取得します。

秘密フォルダ

一部のプラットフォーム機能では暗号化を使用しており、環境キーが必要になりますが、このキーはコンテナコードと一緒には配布されません。このキーファイルの名前は、private.keyで、OutSystemsプラットフォームのインストールフォルダ(通常、C:\Program Files\OutSystems\Platform Server)にあります。以下で説明されている手順で、このキーをコンテナと共有する方法を示します。

SSLオフロード

エンドツーエンドSSLおよびSSLオフロードの手順に従っていることを確認してください。OSSYS_PARAMETERデータベースに新しいレコードを追加する手順については従う必要はありません。この手順はコンテナへのデプロイ時にプラットフォームによってすでに実行されています。
この手順に従ってアプリケーションをパブリッシュしない場合、デプロイしたアプリケーション構成の更新が必要になります。

アプリケーションをDockerコンテナにパブリッシュする

こうした指示は、「コンテナにアプリケーションをパブリッシュする」で説明されている一般的な手順に基づいています。この手順を読んでから進めるようにしてください。

1. アプリケーションをコンパイルしてバンドルを生成する

パブリッシュプロセスを開始して、アプリケーションバンドルを生成するには、以下の手順を実行します。

  1. Service Centerで[Factory] > [Applications] に進み、アプリケーション名をクリックします。

  2. [Publish]ボタンをクリックします。

Service Centerによって表示される進捗段階には、アプリケーションのコンパイル、バイナリの生成および後でコンテナイメージの作成に使用するアプリケーションバンドルの作成などがあります。

バンドルの作成後、Service Centerは最後のログメッセージで以下の2つの重要な情報を表示します。

生成されたバンドルのファイル名とフルパス(ZIPファイル)

このファイルは、アプリケーションをコンテナにデプロイする第2段階で使用されます。ファイル名は以下のテンプレートに従って定義されます。<アプリケーションキー>_<操作ID>.zip

例:
\\twoflower\luggage\bundles\07897a77-3f58-4e5b-b926-a48605c0b6d0_dab321f9-72e8-44e8-ae5c-2c8212314cf6.zip

デプロイの準備手順で要求される結果ファイル名とフルパス
手動またはなんらかの自動化ツールで実施する必要のあるデプロイの準備手順の結果ファイルの名前とパス。このメッセージは手順3で対処する予定のため、ここでは無視してください。

2. コンテナイメージを作成する

この第2段階で、オペレータ(人間または自動化されたデプロイツール)はOutSystemsプラットフォームのスコープ外で一連の操作を実行する必要があります。

以下の手順を実行します。

  1. アプリケーションバンドルのZIPファイルの内容をフォルダに解凍します。

  2. PowerShellを使用して対象フォルダに進み、以下のコマンドを実行してコンテナイメージを作成します。

    docker image build -t <イメージ名>

    このコマンドによって起動準備のできたイメージが作成され、ローカルのDockerレジストリに登録されます。-tタグフラグとそれに続く引数を使用してイメージに名前を付けます。

    オプション: 中央Dockerレジストリを使用している場合は、この時点で作成したイメージを登録できます。

3. デプロイの準備手順の結果ファイルを作成する

第2手順で、Service Centerはコンテナイメージを作成した後、デプロイの準備手順の結果ファイルを要求します。このため、要求された名前でデプロイの準備手順の結果ファイルを作成する必要があります。

結果ファイルの内容は、コンテナイメージの作成手順の結果によって異なります。

デプロイの準備に成功
デプロイメントゾーンの構成されたResultフォルダに要求された名前(.preparedone拡張子)の空のファイルを作成します
デプロイの準備に失敗

正しいファイル名と.preparedone拡張子の付いたJSONファイルを作成します。内容は次に提示するテンプレートに従います。 — ユーザーが定義した以下のエラーメッセージが含まれます。

{"Error":{"Message":"This user-defined error message will appear in the progress log messages in Service Center."}}

次に、デプロイメントゾーンの構成されたResultフォルダに結果ファイルをコピーします。

このファイルは、構成された「Resultフォルダ」に配置する必要があります(同じ情報は、ビルドログメッセージに表示されます)。ファイル名は要求された名前に正確に一致し、.preparedone拡張子を付ける必要があります。この情報はビルドメッセージに表示されます。

例:
\\twoflower\luggage\results\07897a77-3f58-4e5b-b926-a48605c0b6d0_dab321f9-72e8-44e8-ae5c-2c8212314cf6.preparedone

4. コンテナイメージをインスタンス化する

この第4段階で、オペレータ(人間または自動化されたデプロイツール)はあらかじめ作成されたコンテナイメージをインスタンス化して動作するコンテナにします。

コンテナを起動する前に、<host_config_folder>および<host_secret_folder>の各フォルダを構成する必要があります。

4.1 構成フォルダ

同じフォルダを両方の目的に使用している場合は、この手順を省略できます(つまり、第3段階でデプロイメントゾーンのOutput Configs Toフォルダ内にあるアプリケーションに属するフォルダ(結果ファイルの要求されたる名前と同じ名前のフォルダ)をDockerコンテナボリュームとしてマウントする場合)。

コンテナにバインドされたアプリケーションをDockerコンテナにデプロイする場合、OutSystemsプラットフォームは、アプリケーション用に設定されたデプロイメントゾーンの構成で指定されたOutput Config Files toフォルダ内のフォルダにApp.configファイルを作成します

構成ファイルを設定するには、以下の手順を実行します。

  • デプロイメントゾーンの「Output Configs Toフォルダ」内にあるアプリケーションに属するフォルダ(結果ファイルの要求された名前と同じ名前のフォルダ)から<host_config_folder>(任意のフォルダ)に、App.config構成ファイルをコピーします。

4.2 秘密フォルダ

OutSystemsアプリケーションをすでにコンテナにデプロイしたことがある場合は、この手順を省略できます。OutSystemsアプリケーションを含む複数のDockerコンテナで、同じhost_secret_folderrフォルダを使用することができます。

コンテナ内のOutSystemsアプリケーションにはprivate.keyという名前のキーファイルが必要です。このファイルはOutSystemsプラットフォームのインストールフォルダ(デフォルトではC:\Program Files\OutSystems\Platform Server)にあります。

このファイルをコンテナと共有するには、以下の手順を実行します。

  • private.keyファイルを<host_secret_folder>フォルダ(任意のフォルダ)にコピーします。

4.3 コンテナを実行する

コンテナイメージをインスタンス化するには、以下の手順を実行します。

  1. PowerShellで以下のコマンドを実行します。

    docker run --name <container_name> -d -v <host_config_folder>:c:\configs:ro -v <host_secret_folder>:c:\secrets:ro <image_name>

    <container_name>引数には任意の名前を指定できますが、<image_name>には手順2(「コンテナイメージを作成する」)で定義したイメージの名前を指定する必要があります。
    -vパラメータを2つ付けて、構成設定と秘密用のボリュームをマウントします。ホスティングPC上のローカルフォルダ<host_config_folder>はコンテナフォルダc:\configsにマッピングされ、<host_secret_folder>はコンテナフォルダc:\secretsにマッピングされます。いずれも読み取り専用モード(:ro)になります。<host_config_folder>をService Centerでアプリケーションをパブリッシュしたときに生成された構成ファイルを含むコンテナホストPCのフォルダと、<host_secret_folder>を環境秘密鍵(private.keyファイル)を含むコンテナホストPCのフォルダとそれぞれ置き換えます。

    操作が成功すると、完全なコンテナIDが出力されます。<container_name>という名前のコンテナがすでに存在する場合、この操作は失敗します。その場合は、<container_name>_1など別のコンテナ名を選択してください。

  2. PowerShellで以下のコマンドを発行してコンテナが動作していることを確認してください。

    docker ps

    コンテナの状態とIDが出力されます。IDは、出力に表示される完全なIDの最初の12桁の16進数文字セットです。

5. コンテナのネットワークルーティング規則を定義する

第5段階でオペレータは、デプロイメントゾーンアドレスを使用してコンテナ内部のアプリケーションにアクセスできるようにします。

コンテナホストPCの外部で発生したリクエストがコンテナ内部で動作するアプリケーションモジュールにアクセスできるように、ネットワークのルーティング構成を定義することが一般に必要となります。コンテナのIPアドレスを変更した場合、ルーティング規則の変更も必要になる場合があることにご注意ください。

アプリケーション用に構成されたデプロイメントゾーンアドレスを使用して、アプリケーションモジュールがアクセス可能か確認してください。
たとえば、アプリケーションに「Directory」モジュールや「Employees」モジュールが含まれる場合、<zone_address>/Directoryおよび<zone_address>/Employeesのアドレスでアクセスできる必要があります。

コンテナホストPCの外部で発生したリクエストがコンテナ内部で動作する別のアプリケーションモジュールにアクセスできるように、ルーティング規則を複数設定することが必要になります。

Dockerコンテナの例: IISでルーティング規則を設定する

IISを使用してDockerコンテナで動作するアプリケーションに対するネットワークルーティングを実行する方法を学習するには、「IISでルーティング規則を設定する」をご覧ください。このドキュメントには、本シナリオで必要な最小限のルーティング規則の定義方法について説明しています。
最終的なルーティング構成はネットワークチームおよびDevOpsチームと検証するようにしてください。

6. デプロイ手順の結果ファイルを作成する

この段階でオペレータは、要求された名前でデプロイ手順のデプロイ結果ファイルを作成します。このファイルの内容は、コンテナイメージを正常にインスタンス化できたかどうかによって異なります。

デプロイ成功
デプロイメントゾーンの構成されたResultフォルダに要求された名前(.deploydone拡張子)の空のファイルを作成します。
デプロイ失敗

正しいファイル名と.deploydone拡張子の付いたJSONファイルを作成します。内容は次に提示するテンプレートに従います。 — ユーザーが定義した以下のエラーメッセージが含まれます。

{"Error":{"Message":"This user-defined error message will appear in the progress log messages in Service Center."}}

次に、デプロイメントゾーンの構成されたResultフォルダに結果ファイルをコピーします。

このファイルは、「Resultフォルダ」に配置する必要があります(ビルドメッセージにも表示されます)。ファイル名は予期される名前に正確に一致し、.deploydone拡張子を付ける必要があります。また、ビルドメッセージに表示されるものとも一致している必要があります。

例:
\\twoflower\luggage\results\07897a77-3f58-4e5b-b926-a48605c0b6d0_dab321f9-72e8-44e8-ae5c-2c8212314cf6.deploydone

  • Was this article helpful?