JSS Next.js プロジェクト用のSitecore Containerテンプレートのup.ps1コマンドがうまくいかない場合

samatsu 9/13/2021 579 N/A Sitecore JSS

Sitecore JSS Next.js プロジェクト用のSitecore Containerテンプレートを使用することでコンテナベースのNext.js用のSitecoreファーストでの開発用のプロジェクトを簡単にセットアップできます。

手順は基本的に、以下のページに従うことで環境をセットアップできます。

Walkthrough: Using the Sitecore Container Template for JSS Next.js Projects
https://jss.sitecore.com/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew

init.ps1 実行後、 コンテナを起動する際に、up.ps1 コマンドを実行します。この時、以下のような not implemented エラーが生成され、コンテナのセットアップに失敗しました。

not implemented

私の場合、今回は、Docker Desktop for Windows で、Use Docker Compose V2 release candidate の使用が有効になっているのが原因でした。これをOFFにするとコンテナの起動に成功しました。

その他、up.ps1 実行時に次のようなエラーが表示された場合は、

Step 11/19 : RUN Invoke-WebRequest "https://dist.nuget.org/win-x86-commandline/v$env:NUGET_VERSION/nuget.exe" -UseBasicParsing -OutFile "$env:ProgramFiles\NuGet\nuget.exe"
 ---> Running in 424d9fd09b9f
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure
channel.
At line:1 char:76
+ ... yContinue'; Invoke-WebRequest https://dist.nuget.org/win-x86-commandl ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:Htt
   pWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
   ll.Commands.InvokeWebRequestCommand

以下のフォーラムの回答が解決の役に立つと思います。

Container-based solution build errors with "Could not create SSL/TLS secure channel"
https://sitecore.stackexchange.com/questions/29557/container-based-solution-build-errors-with-could-not-create-ssl-tls-secure-chan

上記ページの内容を参考に、docker-compose.override.yml の以下の部分を

BUILD_IMAGE: mcr.microsoft.com/dotnet/framework/sdk:4.8

次のように変更しました。検証時のバージョンは Sitecore 10.1 になります。

BUILD_IMAGE: mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019

これまでの手順で、コンテナの起動に失敗する場合

ビルドも問題なく完了し、コンテナ起動時にエラーが発生する場合はメモリーが不足している場合があります。Hyper-V上で環境を動かしている場合は、動的メモリにしているとメモリの確保がうまくできないようなので、初めからメモリを割り当ててください。

その際、必要に応じてコンテナイメージを削除してから up.ps1 を再実行してください。

ゲスト側のWindows 10 Pro のタスクマネージャーでメモリの増加していく様子を見ているとメモリが不足しているのかがわかると思います。Next.js用のスターター用のテンプレートを使用する場合は16GB以上、実際には開発作業も行いますので20GB位初めから割り当てておいた方がよい気がします。

おまけ

ゲスト側を再起動するたびに、 docker-compose down/up を実施するのが面倒な場合は、docker-compose.ymlにexternalのネットワーク設定(以下例) を追加すると docker-compose start でコンテナを起動できるようになります。

networks:
  default:
    external: true
    name: nat

今回は以上になります。