使用NPM脚本通过命令参数运行docker问题

时间:2019-03-28 06:22:30

标签: docker npm-scripts docker-command

我有一个包含一些NPM便利脚本的存储库,用于运行一些基本的docker命令:

  "scripts": {
    "build": "docker build -t myreadyapi --build-arg LICENSE_SERVER=1.1.1.1 .",
    "prestart": "npm run build",
    "start": "docker run -p 8089:8088 myreadyapi",
    "debug": "docker exec -it $(docker ps -a -q --filter ancestor=myreadyapi) /bin/bash",
    "stop": "docker rm $(docker stop $(docker ps -a -q --filter ancestor=myreadyapi))"
  }

npm run buildnpm run start可以工作,但是npm run debugnpm run stop会导致错误:

  

错误:没有这样的容器:$(docker

注意:从Windows 10 PowerShell控制台运行此程序。

任何具有命令参数(即docker ... $(docker ...))的docker脚本都会发生错误。

以前有人遇到过这种情况,并且知道如何解决吗?

干杯。

2 个答案:

答案 0 :(得分:0)

您可能已停止了一些与$(docker ps -a -q --filter ancestor=myreadyapi)相匹配的容器。
或找不到匹配的filter的容器。
一种解决方案是创建随机容器名称,然后在进一步的命令中使用该名称或设置ancestor系统生成的值。

答案 1 :(得分:0)

我可以通过在命令前面添加“ @powershell”来使其工作。假设Powershell在您的路径中

EG

"docker:stop":"@powershell docker rm $(docker stop $(docker ps -a -q --filter ancestor=myreadyapi))"

引用this答案