Kullanım senaryosuna kısa bir giriş:
Testlerimi kullanarak bir docker
kap go
kullanıyorum go test ./...
. Bu kullanılarak kolayca elde edilebilir docker exec <container> /bin/sh -c "go test ./..."
. Ne yazık ki go test ./...
tüm alt dizinlerde çalışır ve bir (satıcı dizini) hariç tutmak istiyorum.
Bunun için önerilen çözüm aşağıdaki komutu kullanmaktır: bir go test $(go list ./... | grep -v '<excluded>'
şekilde bu beni aşağıdaki sonuca bırakıyor:
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(Bunu hem çalışma hem de exec'de test ettim, ancak muhtemelen aynı çekirdeği kullanıyorlar).
Ben docker exec -it <container_id> /bin/sh
aynı komutu kullanarak konteyner çalıştırmak ssh zaman , bir cazibe gibi çalışır.
Docker exec / run ile kabuk komutları yürütmek iç içe geçmiş komutları desteklemiyor gibi görünüyor $()
?
vendor
Örneğin bir dizin .
$(...)
kabuk tarafından docker kapsayıcısında çalıştırılmadan önce çift tırnak içinde genişletildiğini unutmayın . Bu nedenle, sorun geçerli dizin içeriğinizden kaynaklanıyor olabilir. Çalıştı mı docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
?
$(go list ./... | grep -v '<excluded>'
ne var<excluded>
?