このページの手順に沿って、
Java、
.NET Framework および
.NET ジェネレーターで生成されたアプリケーションを Docker コンテナに簡単にデプロイして実行できます。
この手順はデータベースではなく、生成されたプログラムをデプロイするのに役立ちます。データベースのデプロイ方法については、「
再編成をエクスポート」を参照してください。その他のオプションについては、「
アプリケーションをデプロイ」を参照してください。
ソフトウェア要件:
1.アプリケーションを特定のターゲット (本番環境など) に初めてデプロイする際には、事前に
ナレッジベースに新しい
環境を作成して、次のようにすることをお勧めします:
- GeneXus で使用するPC の Tomcat または IIS でアプリケーションをローカルに実行する
- アプリケーションをターゲット (本番環境など) のデータベースに接続する
2. [ すべてビルド ] を実行します。
3. [ ビルド ] メニューに移動して、 [
アプリケーションをデプロイ ] オプションを選択します。
4. [ デプロイ ] 画面で、次のように設定します:
1.デプロイに含めるメインオブジェクトを選択します。
2. [ ターゲット ] で、 [ Docker Image ] オプションを選択します。
3.次のプロパティを指示どおりに設定します (すべてのフィールドに既定値があります):
1.[ Docker base image ] プロパティ: 新しいイメージを作成する際にベースとして使用するイメージ
2.[ Maintainer name ] プロパティ: イメージの作成者の名前 (イメージのメタデータの一部として設定される)
3.[ Docker Environment variables ] プロパティ: イメージを事前にインスタンス化するすべての環境変数
4.[ Image WebApp location ] プロパティ: Docker イメージ内のアプリケーション実行パス
5.[ Docker image name ] プロパティ: 生成される Docker イメージの名前
5. [ デプロイ ] ボタンをクリックして、Docker イメージを作成します。出力では、プロセスおよび生成されたファイルの場所に関するフィードバックが送信されます。
Windows のコマンドプロンプトで次のコマンドを実行すると、上記の手順で作成したものを含む Docker イメージが一覧表示されます。
Docker イメージ
Java 環境では、Linux ベースのイメージが生成されます。以前作成したイメージ (Dockerfile があるディレクトリーに配置されているもの) を使用してコンテナを実行するには、次のコマンドを実行します。
run コマンドを参照してください。
docker run --rm -p 9999:8080 <Docker イメージ名>
入力値の説明:
--rm
シャットダウン時にコンテナが削除されることを示します。
-p 9999:8080
コンテナのポート 8080 (Tomcat の既定値) がホストで 9999 として公開されていることを示します。
<Docker イメージ名>
前の手順で作成したイメージの名前です。
このコマンドを正しく実行すると、http://localhost:9999/servlet/<Java パッケージ名>.<修飾オブジェクト名> からアプリケーションのメインオブジェクトにアクセスできるようになります。
.NET Framework (C#) 環境では、Windows ベースのイメージが生成されます。以前作成したイメージ (Dockerfile があるディレクトリーに配置されているもの) を使用してコンテナを実行するには、次のコマンドを実行します。
docker run --rm -p 9999:80 <Docker イメージ名>
入力値の説明:
--rm
シャットダウン時にコンテナが削除されることを示します。
-p 9999:80
コンテナのポート 80 (IIS の既定値) がホストで 9999 として公開されていることを示します。
<Docker イメージ名>
前の手順で作成したイメージの名前です。
ERROR ( message:Cannot find requested collection element. )
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
このコマンドを正しく実行すると、http://localhost:9999/<修飾オブジェクト名>.aspx からアプリケーションのメインオブジェクトにアクセスできるようになります。
.NET 環境では、Linux ベースのイメージが生成されます。以前作成したイメージを使用してコンテナを実行するには、次のコマンドを実行します。
docker run --rm -p 9999:80 <Docker イメージ名>
入力値の説明:
--rm
シャットダウン時にコンテナが削除されることを示します。
-p 9999:80
ポート 80 (Web の既定値) がホストで 9999 として公開されていることを示します。
<Docker イメージ名>
前の手順で作成したイメージの名前です。
このコマンドを正しく実行すると、http://localhost:9999/<修飾オブジェクト名>.aspx からアプリケーションのメインオブジェクトにアクセスできるようになります。
- 既定の Docker ベースイメージを使用する際には、次の点に留意してください。
- .NET Framework または .NET で作成したデプロイパッケージは、IIS 8 (以降) と互換性があります。
Troubleshooting deployment to Docker Containers
アプリケーションをデプロイする MSBuild タスク
はい、できます。GeneXus で使用される既定のベースイメージは、
[ Docker base image ] プロパティで変更できます。このプロパティで独自のイメージを設定できます。PC 上にないイメージは、Docker クライアントがレジストリから取得します。
[ Image WebApp location ] プロパティの変更も必要になる場合があることに留意してください。
「Docker for windows」を使用しなくても Dockerfile を生成できます。そのためには、この機能を使用して、通常どおり Docker にデプロイするためのオプションを選択します。
この場合、「警告: Dockerfile successfully created, but no docker image was generated because Docker client was not found」という警告が表示されます。
パッケージを作成したいだけの場合は、GeneXus で [ パッケージのみ ] オプション (または
Docker へデプロイする MSBuild タスク) を使用します。イメージをビルドしようとして、Docker エンジンが動作していない場合、エラーが発生します。