Working in a docker environment

Working in a docker environment

This portion of the guide is meant to help you familiarize with working in a docker environment.

Your Docker Desktop should look like: Docker Desktop - Sitecore XM Next.js

If your environment is stopped, in Docker Desktop, click on the play icon on the xmnextjs row to start or in Visual Studio Code, on the .\run\sitecore-xm1\ directory run

docker compose start

alternatively, if your environment was removed

docker compose up -d

Container logs

The container logs is useful in troubleshooting and see what is running on a particular container.

Let's see what is happening on our node application. On Docker Desktop, click on rendering-1. Scroll all the way to the top of the log, and you'll see that it is running Sitecore in connected mode.

Docker Desktop - rendering log

The container knows to run this since it is a defined entrypoint in the dockerfile at .\docker\build\rendering\Dockerfile Dockerfile - rendering

This npm command corresponds to the package.json defined at .\src\rendering\package.json package.json sitecore connected mode

Folder mounts

We will alter a component and see how it gets updated on your environment.

Open the file .\src\rendering\src\components\ContentBlock.tsx and make a small change. content block - hello world

If you visit your site(https://www.xmnextjs.localhost/ (opens in a new tab) if you are following along), you will see that the change gets reflected right away. This is because of the start:connected command that was executed by the entrypoint. There is no need to run the same command on your Visual Studio Code as the container already does it and is watching for changes in your rendering directory. sitecore jss hello world

We will see how our rendering directory corresponds to the container. Open the file .\run\sitecore-xm1\docker-compose.override.yml. We see that our .\src\rendering folder mounts to the c:\app folder in the container. sitecore jss rendering mount

Back on Docker Desktop, click on the rendering-1 container and Terminal tab. List out the directory by typing dir. We see the same contents as our .\src\rendering folder. Docker desktop terminal