2.3. .NET Core
2.3.1. .NET Core を使用する利点
.NET Core は、自動メモリー管理および最新のプログラム言語が搭載された、汎用の開発プラットフォームです。.NET Core では、効率的に高品質のアプリケーションをビルドできます。 .NET Core は、認定済みのコンテナー経由で Red Hat Enterprise Linux (RHEL 7) および OpenShift Online から利用できます。 .NET Core は以下の機能を提供します。
- マイクロサービスベースのアプローチに従う機能。 この機能では、.NET でビルドされているコンポーネントと、Java でビルドされているコンポーネントがありますが、Red Hat Enterprise Linux や OpenShift Online でサポートされている一般的なプラットフォームにおいてすべて実行可能です。
- Windows で新しい .NET Core ワークロードをより簡単に開発する機能。 Red Hat Enterprise Linux または Windows Server のいずれかでデプロイおよび実行が可能です。
- 基礎となるインフラストラクチャーが Windows Server のみに依存することなしに、.NET アプリケーションを実行できる異種のデータセンター。
- OpenShift Online から .NET、Java、Ruby および Python などの一般的な開発フレームワークの多くにアクセスできる機能。
2.3.2. サポートされているバージョン
- .NET Core バージョン 2.2
- .NET Core バージョン 2.1
- .NET Core バージョン 1.1
- .NET Core バージョン 1.0
- Red Hat Enterprise Linux (RHEL) 7 でサポートされます。
.NET Core バージョン 2.2 関連のリリースの詳細は、『Release Notes for Containers』を参照してください。
.NET Core バージョン 2.1 関連のリリースの詳細は、『Release Notes for Containers』を参照してください。
バージョン 1.1 および 1.0 (rh-dotnetcore11
および rh-dotnetcore10
) には project.json ビルドシステム (1.0.0-preview2
SDK) が同梱されています。RHEL システム以外にこの SDK をインストールする方法については、『version 1.1 Release Notes』の既知の問題についての章を参照してください。
2.3.3. イメージ
RHEL 7 イメージは、Red Hat レジストリーから入手できます。
$ docker pull registry.access.redhat.com/dotnet/dotnet-22-rhel7 $ docker pull registry.access.redhat.com/dotnet/dotnet-21-rhel7 $ docker pull registry.access.redhat.com/dotnet/dotnetcore-11-rhel7 $ docker pull registry.access.redhat.com/dotnet/dotnetcore-10-rhel7
これらのイメージは、dotnet
イメージストリームで使用することができます。
2.3.4. ビルドプロセス
S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。
- ビルダーイメージからコンテナーを起動します。
- アプリケーションソースをダウンロードします。
- ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
- (ビルダーイメージから) assemble スクリプトを実行します。
- 最終的なイメージを保存します。
ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。
2.3.5. 環境変数
.NET Core イメージは、複数の環境変数をサポートします。 この環境変数を設定して、.NET Core アプリケーションのビルド動作を制御することができます。
S2I ビルド設定または .s2i/environment ファイルに、ビルドの動作を制御する環境変数を設定して、ビルドの手順で利用できるようにする必要があります。
変数名 | 説明 | デフォルト |
---|---|---|
| 実行するプロジェクトを選択します。これは、プロジェクトファイル (例: csproj または fsproj) か、単一のプロジェクトファイルを含むフォルダーでなければなりません。 |
|
|
実行するアセンブリーを選択します。これには、 | csproj ファイルの名前 |
| 復元操作時に使用する NuGet パッケージソースをスペース区切りの一覧で指定します。これは、NuGet.config ファイルで指定したすべてのソースよりも優先されます。 | |
|
アプリケーションをビルドする前にインストールする .NET ツールの一覧を指定します。固有のバージョンをインストールするには、パッケージ名の最後に | |
| アプリケーションをビルドする前にインストールする NPM パッケージの一覧を指定します。 | |
|
テストするテストプロジェクトの一覧を指定します。これは、プロジェクトファイルか、または単一のプロジェクトファイルを含むフォルダーでなければなりません。 | |
|
|
|
|
dotnet ビルドコマンドの詳細レベルを指定します。これを設定した場合には、環境変数がビルドの開始時に出力されます。変数は、msbuild の詳細値 ( | |
| アプリケーションのビルド時および実行時に使用する HTTP/HTTPS プロキシーを設定します。 | |
| ビルドプロセス中にパッケージをダウンロードするカスタムの NPM レジストリーミラーを使用します。 | |
|
この変数を |
|
|
| |
|
追加で信頼する SSL 証明書を使ってフォルダーおよびファイルの一覧を指定するために使用されます。証明書は、ビルド時に実行される各プロセス、およびビルドされたアプリケーションを含め、ビルド後にイメージで実行されるすべてのプロセスで信頼されます。使用される項目には、 | |
|
|
|
|
|
|
|
|
2.3.6. .NET Core ソースからのアプリケーションのクイックデプロイ
.NET イメージストリーム は最初にインストールする必要があります。標準インストールを実行した場合には、イメージストリームは存在します。
サンプルのリポジトリーに対して oc new-app
を実行すると、イメージを使用してアプリケーションをビルドできます。
$ oc new-app dotnet:2.2~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-2.2 --context-dir=app $ oc new-app dotnet:2.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-2.1 --context-dir=app $ oc new-app dotnet:1.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-1.1 --context-dir=app $ oc new-app dotnet:1.0~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-1.0 --context-dir=app