사용 사례에 대한 간단한 소개 :
를 사용하여 테스트 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 모두에서 이것을 테스트했지만 아마도 동일한 코어를 사용합니다).
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>
입니까?