docker-node icon indicating copy to clipboard operation
docker-node copied to clipboard

node:20.13 breaks building with workspaces from root

Open tharvik opened this issue 1 year ago • 3 comments

Environment

  • Platform: GNU/Linux
  • Docker Version: 24.0.5, build ced0996600
  • Node.js Version: 20.13
  • Image Tag: 20.13

Expected Behavior

Building a workspace aware project without changing workdir.

Current Behavior

npm fails stating that it can't find any workspace: "ERR! No workspaces found!"

Possible Solution

setting WORKDIR to another dir than / before running npm fixes it. also using node:20.12 instead of node:20 (or node:20.13) fixes it.

Steps to Reproduce

FROM node:20.13

RUN echo '{ "name": "root", "workspaces": ["pkg"] }' > package.json
RUN mkdir -p pkg/
RUN echo '{ "name": "pkg" }' > pkg/package.json
RUN npm -ws pkg get name # random workspace aware cmd

tharvik avatar May 08 '24 18:05 tharvik

Leaving the workdir undefined is the preferred behavior because it's an image that is used as a base for other images. The workdir can easily be set either in a dependent image or at runtime.

LaurentGoderre avatar May 08 '24 20:05 LaurentGoderre

indeed, working around it is quite easy. but I don't see documentation on actively setting the workdir when deriving an image. and it was working in the previous minor version so I see it as a regression on a LTS image, which might break a bunch of setup (it broke mine at least).

tharvik avatar May 08 '24 23:05 tharvik

It might be a change of behavior in npm that causes this to change within a major version.

LaurentGoderre avatar May 09 '24 13:05 LaurentGoderre