1

我有一个带有一些 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 脚本都会发生该错误。

有没有人遇到过这个问题并且知道如何解决这个问题?

干杯。

4

2 回答 2

0

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

例如

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

参考这个答案

于 2019-08-09T14:38:34.480 回答
0

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

于 2019-03-28T07:59:39.747 回答