我正在将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.
3条答案
按热度按时间chhkpiq41#
也许npm在不同的用户下运行,而别名不存在。通过在启动脚本中添加id命令来检查。另一种猜测是:在新的终端窗口中运行它以重新加载用户环境。
dly7yett2#
这就是解决办法。
检查是否已将脚本 shell 设置到终端。
要进行检查,只需使用命令
npm config ls -l
如果"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
pftdvrlh3#
我得到了这个工作:
1.将
alias docker='podman'
添加到~/.zshenv
1.运行
npm config set script-shell zsh
参见:https://github.com/npm/cli/issues/5153