2

I'm using the standard monorepo and making it multi-site with each site having its own npm workspace, and then a shared code npm workspace. This is all working fine, it deploys to XM Cloud and runs successfully. The only issue is the local Docker environment. The rendering container fails to run with Error: EPERM: operation not permitted, symlink 'C:\app\packages\ui' -> 'C:\app\node_modules\@aceik-demo\ui'

If I remove the npm install from the dockerfile and run npm install first on the host machine, then on startup it gives an error saying it can't find @aceik-demo\ui. It looks like this is because it doesn't know about these important symlinks in the container.

I've tried making sure the container is using ContainerAdministrator, but it makes no difference.

3
  • Which version of Windows are you running? And are you able to create symlinks yourself, in a non-elevated prompt on your local machine?
    – Mark Cassidy
    Commented Feb 6 at 7:05
  • Windows 11 Pro. No, but after changing the permissions so I can, still the same issue. Commented Feb 7 at 0:14
  • I am running into the same issue. How did you end up resolving for local development? My host machine is also Windows 11 Pro. Commented Feb 20 at 5:27

2 Answers 2

4

Workaround 1 - use Windows Server 2022 for the host machine

I managed to eventually find there is an open issue here for this problem.

... the problem exists only when running Windows Server image on Windows Desktop host machine.

This is the case for me where the host machine is Windows 11 Pro and the image is mcr.microsoft.com/windows/nanoserver:ltsc2022 with process isolation enabled.

So it seems the only available workaround to the symlink issue is to use Windows Server 2022 for the host machine.

Workaround 2 - don't use docker anymore for the rendering host

Just don't use docker anymore for the rendering host, and run npm run start:connected from the host machine. You can still get Pages editor working locally by pointing it to to <host ip address>:3000. There is also a way to use host.docker.internal instead of the IP address.

1

The web is filled with answers and conflicting ideas on how to solve this. I'm taking a guess and suggest, you may be looking at a permission issue.

To test this, follow these steps. Assuming Windows 10/11 Pro or above.

  • Open the Local Security Policy -> Local Policies -> User Rights Assignment -> Create symbolic links
  • Click into Add User or Group...
  • Click into Advanced...
  • Click into Find Now
  • Search for your user and click all Oks... reboot your Windows.

Source: https://github.com/lovell/sharp/issues/1671

1
  • I tried it but no luck. Commented Feb 7 at 0:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.