Kullanım senaryosuna kısa bir giriş:
Testlerimi kullanarak bir dockerkap gokullanı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/shaynı 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>?