Я использую эту серию команд для создания и запуска контейнера докеров.
Команды работают в сочетании с &&
и дают следующий результат:
> docker stop $(docker ps -a -q --filter ancestor=redoc1) && docker build -t redoc1 . && docker run -p 8070:80 -d redoc1
4127c16715e8
3995f290bcf3
60cacd2d669b
7e509bd0f443
69e186743360
1caad359f950
Sending build context to Docker daemon 113.7kB
Step 1/2 : FROM redocly/redoc:v2.0.0-rc.18
---> 262cf1bbd824
Step 2/2 : COPY config/docker/index.tpl.html /usr/share/nginx/html/index.html
---> Using cache
---> a8b03c1555c5
Successfully built a8b03c1555c5
Successfully tagged redoc1:latest
183bd1af2d61968e67c6b0eec27d24a5892851ddc15b41bc155b8335de83f0ac
Я использую Z Shell и обычно устанавливаю псевдонимы для таких повторяющихся наборов команд. Успешно, до сих пор.
Я создал следующую команду в ~ / .zshrc
:
alias redocly-local-deploy="docker stop $(docker ps -a -q --filter ancestor=redoc1) && docker build -t redoc1 . && docker run -p 8070:80 -d redoc1"
Это та же самая команда, что и приведенная выше, которая работает непосредственно в оболочке.
Но при запуске псевдонима (после перезагрузки zshrc) он терпит неудачу после первой (или второй?) Команды:
> redocly-local-deploy
4127c16715e8
zsh: command not found: 3995f290bcf3
zsh: command not found: 60cacd2d669b
zsh: command not found: 7e509bd0f443
zsh: command not found: 69e186743360
zsh: command not found: 1caad359f950
Похоже, что вывод первой команды отбрасывает его. Я попытался добавить > / dev / null
к первой команде, но получил тот же результат.
Признательны за любую помощь!
Отвечая на свой вопрос, основанный на комментарии @ steeldriver.
$ (docker ps -a -q --filter ancestor = redoc1)
оценивается при загрузке псевдонима (из-за внешних двойных кавычек), а не при его запуске, что и вызывает проблему.
Простое решение - заменить двойные кавычки одинарными.