ব্যবহারের ক্ষেত্রে একটি সংক্ষিপ্ত ভূমিকা:
আমি 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 " (আমি এটি রান এবং এক্সিকিউট উভয় ক্ষেত্রেই পরীক্ষা করেছি, তবে তারা সম্ভবত একই কোরটি ব্যবহার করে)।
যখন আমি docker exec -it <container_id> /bin/shঠিক একই কমান্ডটি ব্যবহার করে ধারকটিতে প্রবেশ করি এবং এটি চালকের মতো কাজ করে।
দেখে মনে হচ্ছে শেল কমান্ড কার্যকর করে ডকার এক্সিকিউট / রান চালিত কোনও কমান্ড সমর্থন করে না $()?
vendorউদাহরণস্বরূপ এটি একটি ডিরেক্টরি ।
$(...)নোটার ধারকটির ভিতরে এটি চালানোর আগে ডাবল উদ্ধৃতিগুলির মধ্যে আপনার শেল দ্বারা প্রসারিত করা হয়েছে তা নোট করুন । সুতরাং, সমস্যাটি আপনার বর্তমান ডিরেক্টরি সামগ্রী থেকে আসতে পারে। কি docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'কাজ করে?
$(go list ./... | grep -v '<excluded>', কি<excluded>?