NPM Docker命令未被别名podman覆盖

rxztt3cl  于 2023-03-07  发布在  Docker
关注(0)|答案(3)|浏览(99)

我正在将Docker迁移到Podman,当被npm调用时,别名不起作用。
我添加了我的env别名:

alias docker='podman'
alias docker-compose='podman-compose'

为了测试别名,我运行了docker-compose up --build,使用podman-compose可以正常工作,就像预期的那样。
我的包裹上有

"scripts": {
    "start": "docker-compose up --build",
    ...

当I运行***npm运行启动***时,输出如下:

❯ npm run start

> project@1.0 start
> docker-compose up --build

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

我又做了一个测试,在package.json文件上将docker-compose更改为podman-compose,也可以工作。

预期行为

识别环境别名。就像我在终端上直接运行命令时发生的那样。

重现步骤

1.在 Docker 的名字上设置港口工人的别名。

alias docker='podman'
alias docker-compose='podman-compose'

1.在package.json上添加一个脚本以使用docker-compose。

"scripts": {
    "start": "docker-compose up --build",
    ...

1.运行npm脚本。

npm run start

环境

  • 国家预防机制:8.13.2
  • 节点. js:版本14.19.3
  • 操作系统名称:macOS 12.4( Monterey )
  • 系统型号名称:苹果笔记本Pro M1
  • npm配置:
❯ npm config ls
; node bin location = /Users/XPTO/.nvm/versions/node/v14.19.3/bin/node
; node version = v14.19.3
; npm local prefix = /Users/XPTO
; npm version = 8.13.2
; cwd = /Users/XPTO
; HOME = /Users/XPTO
; Run `npm config ls -l` to show all defaults.
chhkpiq4

chhkpiq41#

也许npm在不同的用户下运行,而别名不存在。通过在启动脚本中添加id命令来检查。另一种猜测是:在新的终端窗口中运行它以重新加载用户环境。

dly7yett

dly7yett2#

这就是解决办法。
检查是否已将脚本 shell 设置到终端。
要进行检查,只需使用命令npm config ls -l

...
script-shell = null
searchexclude = ""
searchlimit = 20
searchopts = ""
searchstaleness = 900
shell = "/bin/zsh"
...

如果"script-shell"值为空,请使用以下命令npm config set script-shell zsh将此值设置为缺省终端(zsh是macOS Catalina的默认终端)如果您不介意为每个项目更改shell,应该可以做到这一点。如果您希望更具体一些,你可以添加--location=project到那个命令和一个.npmrc文件将被创建在你的项目和设置将只应用到那一个项目.
这里的来源:www.example.comhttps://github.com/npm/cli/issues/5153#issue-1302253170

pftdvrlh

pftdvrlh3#

我得到了这个工作:
1.将alias docker='podman'添加到~/.zshenv
1.运行npm config set script-shell zsh
参见:https://github.com/npm/cli/issues/5153

相关问题