如何使用来自节点映像的单行 "docker run" 命令在当前目录中的本地计算机上生成 package.json 文件

How to generate a package.json file on local machine in current directory, using single line "docker run" command from node image

我正在尝试 运行 npm init 命令通过 运行ning Node 映像在我的本地机器当前工作目录上吐出一个 package.json 文件在 docker.

我试过这样做,但没有得到上述预期的结果。

docker run -d -v $pwd:~/tmp node:18-alpine3.14 "cd ~/tmp && npm init"

我在上面最后传递的命令被传递到 Node 应用程序而不是它所在的容器。我知道这是因为容器以 Error: Cannot find module '/cd ~/tmp && npm init'.

退出

在此示例中,我如何执行容器接收的命令而不是其中的节点?[​​=15=]

你云使用sh -c "some command"作为命令,但我认为它更干净,如下所示。

使用 workdir 标志并使用您的本地用户和组 ID,这样您以后就不必修复权限。

docker run --rm \
  --user "$(id -u):$(id -g)" \
  --workdir /temp \
  --volume "$PWD:/tmp" \
  --tty
  --interactive
  node:18-alpine3.14 npm init

我也在使用 tty 和 interactive 以便您可以回答来自 npm init 的问题。如果您不想提问,请使用 npm init -y.