ডকার-কমপোজ.আইএমএলে কোনও পরিষেবা অক্ষম করার কোনও উপায় আছে কি?


91

আমি নিজেকে এই পরিস্থিতিতে খুঁজে পাই যে আমি কোনও docker-composeফাইলে সাময়িকভাবে কোনও পরিষেবা অক্ষম করতে চাই ।

অবশ্যই আমি এটি মন্তব্য করতে পারি, তবে কেবল " enabled: false" বলার কোনও বিকল্প আছে কি ?


4
উত্তরটি হ'ল: "এটি নির্ভর করে" ... আপনি কী অর্জন করার চেষ্টা করছেন তার উপর। আপনি চালনা docker-compose upকরলে এটি ডিফল্টভাবে সমস্ত পরিষেবা শুরু করবে। তবে, আপনি docker-compose up myserviceএটি চালনা করলে মাইসার্ভিস এবং এটি নির্ভর করে এমন জিনিস শুরু হবে। নির্ভরতা সেট আপ করে আপনি এটি তৈরি করতে পারেন যাতে এই পরিষেবাটি দিয়ে খারাপ পরিষেবা শুরু না হয়। আপনি docker-compose runচান পরিষেবাগুলি পেতে আপনিও করতে পারেন। আপনার প্রয়োজনীয় নমনীয়তাটি মঞ্জুর করতে সঠিক পছন্দটি এটিকে একাধিক রচনা ফাইলগুলিতে বিভক্ত করাও হতে পারে।
পল বেকোট

আমার অনুরূপ প্রয়োজন হ্যান্ডেল করার জন্য, আমি depend_on এবং পরিষেবা যুক্তির সাথে ডকার-রচনাতে খেলি বা --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
গঞ্জালালো


@ এশানবাংসাল আমি এই জাতীয় বৈশিষ্ট্যটি জানি না।
ভনসি

উত্তর:


42

আপনি কমান্ডকে কিছু এমন কিছু দিয়ে বদলানোর জন্য entrypointবা এরcommand নতুন সংজ্ঞা দিতে পারেন ( /bin/true)

যা কিছু না করে তাত্ক্ষণিকভাবে ধারকটিকে প্রস্থান করবে।


শাদি মন্তব্যগুলিতে নিম্নলিখিত টিপস যুক্ত করেছেন:

আপনি যদি পরিষেবাটি একেবারেই তৈরি না করতে চান, তবে কেবলমাত্র একটিতে দেখানোর জন্য বিল্ড কীটি পুনরায় সংজ্ঞা দিন Dockerfile:

FROM tianon/true 
ENTRYPOINT ["/true"]

5andr0 তুলে ধরে মন্তব্য টপ লেভেল অধ্যায়x-disabled: (একটি এক্সটেনশন ক্ষেত্র মত)

আরও সুবিধাজনক: x-disabled:পরিবর্তে অক্ষম পরিষেবাগুলিকে শীর্ষ স্তরের বিভাগে সরিয়ে নেওয়াservices:

x-উপসর্গ সহ বিভাগগুলি পার্স করা হবে, তবে যদি কোনও এক্সটেনশন ক্ষেত্র হিসাবে উদ্দেশ্য মতো ব্যবহার না করা হয় তবে তা উপেক্ষা করা হবে।


15
restart: "no"অসীম পুনঃসূচনাগুলি এড়াতে আমিও যুক্ত / পরিবর্তন করব
DUzun

4
এটি এই ক্ষেত্রে সহায়তা করে না যে আপনি এই পরিষেবাটি যে অক্ষম করতে চান তার কারণ হ'ল পরিষেবাটিও শুরু করা যায় না। আমার ক্ষেত্রে, পোস্টগ্রিজ শুরু হয় না কারণ পোস্টগ্রাগেস চলার আর একটি উদাহরণ রয়েছে এবং পোর্টস কমান্ড দ্বন্দ্বের কারণ হয়ে দাঁড়ায়। আমি সংজ্ঞাটি পরিবর্তন করা শুরু করতে পারি, তবে এই মুহুর্তে পুরো জিনিসটি মন্তব্য করা সহজ।
ব্লুফাস্ট

4
আরও সুবিধাজনক: অক্ষম পরিষেবাদিগুলি x-disabled:পরিবর্তে শীর্ষ স্তরের বিভাগে services:
স্থানান্তরিত করা

@ 5andr0 আকর্ষণীয়। সেই ডকার-রচনা বিভাগের জন্য কোনও ডকুমেন্টেশন আছে?
ভনসি

v3.4-এ প্রবর্তিত হয়েছে ডকস.ডোকার.কম্পোজ / কমপোজ- ফাইল /# এক্সটেনশন- ফিল্ডস। এক্স-উপসর্গ সহ বিভাগগুলি পার্স করা হবে, তবে কোনও এক্সটেনশন ক্ষেত্র হিসাবে
অভিযুক্ত

63

আপনি একটি 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"]

4
আপনার যদি "পুনঃসূচনা: যদি না থামে" ইত্যাদি থাকে তবে মন্তব্য করুন বা এটি অবিচ্ছিন্নভাবে পুনরায় আরম্ভ হবে
আন্দ্রেয়াস

ওভাররাইড ফাইলে এন্ট্রিপয়েন্টটি পরিবর্তন করার ধারণা। যদি আপনার নীতিগুলি পুনরায় চালু হয়, তবে এটি অসীম স্লিপ লুপে পরিবর্তন করুন
Kos Prov

স্পষ্ট করার জন্য, আপনি ভনকের উত্তরের মত এটি ডকার-কমপোজ.আইএমএল এ করতে পারেন। আপনি যদি এটি পরীক্ষা করে দেখতে চান এবং অন্যান্য বিকাশকারীদের সাথে ভাগ করতে চান তবে এটি উপযুক্ত হবে। এছাড়াও, রচনা ফাইল ফর্ম্যাট ভি 1 পরিষেবাগুলির নামগুলি (উপরের উদাহরণে foo) "পরিষেবাদি" এর সাবকিগুলি না করে শীর্ষ-স্তরের কী হিসাবে গ্রহণ করে।
ডেনিস হাও

4
কোনও নির্দিষ্ট পরিবেশের (যেমন উন্নয়ন / মঞ্চায়ন / উত্পাদন) কোনও পরিষেবা অক্ষম / সক্ষম করতে চাইলে এই সমাধানটি দুর্দান্তভাবে কাজ করে যেখানে -f বিকল্পের সাহায্যে প্রতিটি পরিবেশের জন্য আপনার আলাদা একটি ওভাররাইড ফাইল নির্দিষ্ট করা আছে।
জাস্টিন

ডকার-কমপোজ ভি 3 সহ আমরা অক্ষম সেবার জন্য export XXX_ENTRYPOINT=/bin/true এনভিটি ব্যবহার করতে পারি, যেমন: তারপরে `এন্ট্রিপয়েন্ট: [" $ {XXX_ENTRYPOINT: -docker-entryPoint.sh} "]
q

9

আমি অস্থায়ীভাবে অক্ষম করতে চাইলে পরিষেবাটিতে নিম্নলিখিত অতিরিক্ত লাইন যুক্ত করি:

command: echo "{put your service name here} disabled"

এটি যাইহোক শুরু হয়, কিন্তু কিছুই করে না।


6
পুনরায় সংজ্ঞায়িত করা commandএন্ট্রি পয়েন্টে প্রভাব ফেলবে না। আপনার উদাহরণে আপনি নির্ভর করে entrypointহয় bashআমি অনুমান। এই স্থিতিস্থাপক হয়ে উঠতে (অন্তর্নির্মিতের চেয়ে পৃথক entrypoint) আমি মনে করি আপনাকে কমান্ড নয়, এন্ট্রি পয়েন্টটি পুনরায় সংজ্ঞায়িত করতে হবে
ব্লুফাস্ট

4

ডকার কমপোজ ইয়েল ফাইলটিতে সংজ্ঞায়িত কোনও পরিষেবা অক্ষম করার কোনও উপায় নেই। ভনসির পরামর্শটি ভাল কাজ করার জন্য উপলভ্য বিকল্পগুলির জন্য ডকার রচনা ডকুমেন্টেশন নীচে দেখুন দয়া করে https://docs.docker.com/compose/compose-file/


2

আমি 0 প্রতিরূপে পরিষেবাটি স্কেল করব: স্থাপনা: প্রতিলিপি: 0

দুর্ভাগ্যক্রমে ডকুমেন্টেশন হিসাবে এটি কেবল ডকার সোর্মের সাথে কাজ করে।


-2

আমি বুঝতে পেরেছি:

docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')

অনুরোধটি থেকে যেমনটি আশা করা হত ঠিক তেমনই এটি করে। এটি কুঁচকানো সবচেয়ে সহজ নয়, তবে এটি আমার ক্ষেত্রে যথেষ্ট কাজ করে এবং আমি এটিকে আমার কিছু স্ক্রিপ্টে সংহত করতে পারি।
বিল কিডওয়েল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.