Ошибка запуска Docker с параметром команды с использованием сценариев NPM

У меня есть репозиторий с некоторыми удобными сценариями NPM для запуска некоторых основных команд докера:

  "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 build а также npm run start работать, но npm run debug а также npm run stop вызвать ошибку:

Ошибка: такого контейнера нет: $(docker

Примечание: запуск этого из консоли Windows 10 PowerShell.

Ошибка происходит для любого сценария Docker, который имеет параметр команды (т.е. docker ... $(docker ...)).

Кто-нибудь сталкивался с этим раньше и знает, как это исправить?

Приветствия.

1 ответ

Может случиться так, что у вас есть несколько остановленных контейнеров, которые соответствуют $(docker ps -a -q --filter ancestor=myreadyapi),
Или контейнер не найден с соответствующим filter,
Одним из решений может быть случайное имя контейнера и использование этого имени в дальнейших командах или наборе ancestor Система генерирует значение.

Я смог заставить это работать, добавив "@powershell" перед командой. Это предполагает, что Powershell на вашем пути

НАПРИМЕР

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

Ссылка на этот ответ

Другие вопросы по тегам