I’m trying to run my Node.js application using the gcr.io/distroless/nodejs20-debian12:debug
image. However, when I execute my application, I get the following error:
I am using the npx command in my docker-compose file, but it seems like node and npm are not installed in the container. Why are the node and npm commands not found in the gcr.io/distroless/nodejs20-debian12:debug image?
How can I run npx commands using a distroless Node.js image?
docker logs -f 33ab810a0a37
node:internal/modules/cjs/loader:1148
throw err;
^
Error: Cannot find module '/app/npx'
at Module._resolveFilename (node:internal/modules/cjs/loader:1145:15)
at Module._load (node:internal/modules/cjs/loader:986:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v20.16.0
It seems like the Node.js runtime is not available. Here are the details when I run the container interactively:
docker run --entrypoint=sh -ti wt/collector:v1
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
/app # cat /etc/*release*
PRETTY_NAME="Distroless"
NAME="Debian GNU/Linux"
ID="debian"
VERSION_ID="12"
VERSION="Debian GNU/Linux 12 (bookworm)"
HOME_URL="https://github.com/GoogleContainerTools/distroless"
SUPPORT_URL="https://github.com/GoogleContainerTools/distroless/blob/master/README.md"
BUG_REPORT_URL="https://github.com/GoogleContainerTools/distroless/issues/new"
/app # node -v
sh: node: not found
/app # npm -v
sh: npm: not found
/app #