আমি নিজেকে এই পরিস্থিতিতে খুঁজে পাই যে আমি কোনও docker-compose
ফাইলে সাময়িকভাবে কোনও পরিষেবা অক্ষম করতে চাই ।
অবশ্যই আমি এটি মন্তব্য করতে পারি, তবে কেবল " enabled: false
" বলার কোনও বিকল্প আছে কি ?
আমি নিজেকে এই পরিস্থিতিতে খুঁজে পাই যে আমি কোনও docker-compose
ফাইলে সাময়িকভাবে কোনও পরিষেবা অক্ষম করতে চাই ।
অবশ্যই আমি এটি মন্তব্য করতে পারি, তবে কেবল " enabled: false
" বলার কোনও বিকল্প আছে কি ?
--no-deps
আপনি নির্ভরতা শুরু করতে না চান সেই ক্ষেত্রে বিকল্পটি নিয়ে খেলি । আমি জানি আপনি যা খুঁজছেন তা নয়, তবে এটি অন্য রাস্তা।
docker-compose -f docker-compose.yml -f another-docker-compose.yml up -d
। আপনি কনফিগার কমান্ডের সাথে পরিণতিযুক্ত ডকারের রচনাটি মার্জ করে দেখতে পারেন :docker-compose -f docker-compose.yml -f another-docker-compose.yml config
উত্তর:
আপনি কমান্ডকে কিছু এমন কিছু দিয়ে বদলানোর জন্য entrypoint
বা এরcommand
নতুন সংজ্ঞা দিতে পারেন ( /bin/true
)
যা কিছু না করে তাত্ক্ষণিকভাবে ধারকটিকে প্রস্থান করবে।
শাদি মন্তব্যগুলিতে নিম্নলিখিত টিপস যুক্ত করেছেন:
আপনি যদি পরিষেবাটি একেবারেই তৈরি না করতে চান, তবে কেবলমাত্র একটিতে দেখানোর জন্য বিল্ড কীটি পুনরায় সংজ্ঞা দিন
Dockerfile
:
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0 তুলে ধরে মন্তব্য টপ লেভেল অধ্যায়x-disabled:
(একটি এক্সটেনশন ক্ষেত্র মত)
আরও সুবিধাজনক:
x-disabled:
পরিবর্তে অক্ষম পরিষেবাগুলিকে শীর্ষ স্তরের বিভাগে সরিয়ে নেওয়াservices:
x-
উপসর্গ সহ বিভাগগুলি পার্স করা হবে, তবে যদি কোনও এক্সটেনশন ক্ষেত্র হিসাবে উদ্দেশ্য মতো ব্যবহার না করা হয় তবে তা উপেক্ষা করা হবে।
restart: "no"
অসীম পুনঃসূচনাগুলি এড়াতে আমিও যুক্ত / পরিবর্তন করব
x-disabled:
পরিবর্তে শীর্ষ স্তরের বিভাগে services:
আপনি একটি docker-compose.override.yaml
ফাইল এটি করতে পারেন ।
এই ফাইলটি স্বয়ংক্রিয়ভাবে পড়ে docker-compose
এবং মূলটিতে মিশে যায় docker-compose.yaml
।
যদি আপনার এটি গিট থেকে বাদ দেওয়া হয় তবে প্রতিটি বিকাশকারী আসলটি পরিবর্তন না করেই কনফিগারেশনটি (কয়েকটি সীমাবদ্ধতার সাথে) টুইঙ্ক করতে পারেন docker-compose.yaml
।
সুতরাং, পরিষেবাটিতে foo
এর প্রবেশদ্বারটিকে নতুন করে সংজ্ঞায়িত করে অ্যাড-হক অক্ষম করা যেতে পারে docker-compose.override.yaml
:
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
export XXX_ENTRYPOINT=/bin/true
এনভিটি ব্যবহার করতে পারি, যেমন: তারপরে `এন্ট্রিপয়েন্ট: [" $ {XXX_ENTRYPOINT: -docker-entryPoint.sh} "]
আমি অস্থায়ীভাবে অক্ষম করতে চাইলে পরিষেবাটিতে নিম্নলিখিত অতিরিক্ত লাইন যুক্ত করি:
command: echo "{put your service name here} disabled"
এটি যাইহোক শুরু হয়, কিন্তু কিছুই করে না।
command
এন্ট্রি পয়েন্টে প্রভাব ফেলবে না। আপনার উদাহরণে আপনি নির্ভর করে entrypoint
হয় bash
আমি অনুমান। এই স্থিতিস্থাপক হয়ে উঠতে (অন্তর্নির্মিতের চেয়ে পৃথক entrypoint
) আমি মনে করি আপনাকে কমান্ড নয়, এন্ট্রি পয়েন্টটি পুনরায় সংজ্ঞায়িত করতে হবে
ডকার কমপোজ ইয়েল ফাইলটিতে সংজ্ঞায়িত কোনও পরিষেবা অক্ষম করার কোনও উপায় নেই। ভনসির পরামর্শটি ভাল কাজ করার জন্য উপলভ্য বিকল্পগুলির জন্য ডকার রচনা ডকুমেন্টেশন নীচে দেখুন দয়া করে https://docs.docker.com/compose/compose-file/
আমি 0 প্রতিরূপে পরিষেবাটি স্কেল করব: স্থাপনা: প্রতিলিপি: 0
দুর্ভাগ্যক্রমে ডকুমেন্টেশন হিসাবে এটি কেবল ডকার সোর্মের সাথে কাজ করে।
আমি বুঝতে পেরেছি:
docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')
আদিম তবে #
পরিষেবাটির প্রতিটি লাইনের শুরুতে একটি যুক্ত করুন ।
docker-compose up
করলে এটি ডিফল্টভাবে সমস্ত পরিষেবা শুরু করবে। তবে, আপনিdocker-compose up myservice
এটি চালনা করলে মাইসার্ভিস এবং এটি নির্ভর করে এমন জিনিস শুরু হবে। নির্ভরতা সেট আপ করে আপনি এটি তৈরি করতে পারেন যাতে এই পরিষেবাটি দিয়ে খারাপ পরিষেবা শুরু না হয়। আপনিdocker-compose run
চান পরিষেবাগুলি পেতে আপনিও করতে পারেন। আপনার প্রয়োজনীয় নমনীয়তাটি মঞ্জুর করতে সঠিক পছন্দটি এটিকে একাধিক রচনা ফাইলগুলিতে বিভক্ত করাও হতে পারে।