Краткое введение в вариант использования:
Я использую docker
контейнер для запуска моих go
тестов с помощью go test ./...
. Это может быть легко достигнуто с помощью docker exec <container> /bin/sh -c "go test ./..."
. К сожалению, go test ./...
работает во всех подкаталогах, и я хотел бы исключить один (каталог поставщика).
Рекомендуемое решение для этого заключается в использовании следующей команды: go test $(go list ./... | grep -v '<excluded>'
как-то это оставляет меня со следующим результатом:
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(Я проверил это как на run, так и на exec, но они, вероятно, используют одно и то же ядро).
Когда я ssh в контейнер с помощью docker exec -it <container_id> /bin/sh
и запускаю ту же команду, это работает как шарм.
Кажется, что выполнение команд оболочки через докер exec / run не поддерживает команды, вложенные в $()
?
vendor
например.
$(...)
ваша оболочка была развернута внутри двойных кавычек, прежде чем она была запущена внутри контейнера докера. Таким образом, проблема может исходить от вашего текущего содержимого каталога. Работал docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
?
$(go list ./... | grep -v '<excluded>'
что<excluded>
это?