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
今回は以上になります。
さんのコメント: さんのコメント: