ユースケースの簡単な紹介:
を使用しdocker
てgo
テストを実行するためにコンテナを使用していgo test ./...
ます。これはを使用して簡単に実現できますdocker exec <container> /bin/sh -c "go test ./..."
。残念ながらgo test ./...
、すべてのサブディレクトリで実行されるため、1つ(ベンダーディレクトリ)を除外したいと思います。
このための推奨される解決策は、次のコマンドを使用するgo test $(go list ./... | grep -v '<excluded>'
ことです。
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(私はこれをrunとexecの両方でテストしましたが、おそらく同じコアを使用しています)。
docker exec -it <container_id> /bin/sh
まったく同じコマンドを使用してコンテナにsshして実行すると、それは魅力のように機能します。
docker exec / runでシェルコマンドを実行すると、$()
?でネストされたコマンドはサポートされないようです。
vendor
たとえば、ディレクトリです。
$(...)
ドッカーコンテナー内で実行される前に、二重引用符でシェルによって展開されたことに注意してください。そのため、問題は現在のディレクトリのコンテンツに起因する可能性があります。docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
うまくいきましたか?
$(go list ./... | grep -v '<excluded>'
、何<excluded>
ですか?