আমার কি ডকার-কমপোজ আপ ব্যবহার করা উচিত?


129

runকোনও docker-compose.ymlফাইল শুরু করার জন্য ব্যবহার করার কোনও কারণ আছে বা আপনার কেবল ব্যবহার করা উচিত up?

আমি বুঝতে পারি যে runএকটি নির্দিষ্ট ধারক শুরু করতে পারে, তবে আমি সেই ক্ষেত্রে উল্লেখ করছি যেখানে আপনি কোনও ধারক নির্দিষ্ট না করেই এটি ব্যবহার করেন যাতে এটি আপনার সমস্ত yML ধারককে শুরু করে।

উত্তর:


141

হিসাবে বর্ণিত docker-compose run(2015)

রান দ্বারা পরিচালিত কমান্ডটি পরিষেবা কনফিগারেশনে সংজ্ঞায়িত কমান্ডকে ওভাররাইড করে
উদাহরণস্বরূপ, যদি ওয়েব পরিষেবা কনফিগারেশনটি শুরু হয় bashতবে docker-compose run web python app.pyএটিকে ওভাররাইড করে python app.py

দ্বিতীয় পার্থক্য হ'ল docker-compose runকমান্ডটি পরিষেবা কনফিগারেশনে উল্লিখিত কোনও পোর্ট তৈরি করে না
এটি ইতিমধ্যে খোলা বন্দরের সাথে বন্দরের সংঘর্ষকে বাধা দেয়। আপনি যদি পরিষেবাটির বন্দরগুলি হোস্টের জন্য তৈরি এবং ম্যাপ করতে চান তবে - সার্ভিস-পোর্ট ফ্ল্যাগটি নির্দিষ্ট করুন:

$ docker-compose run --service-ports web python manage.py shell

সুতরাং যদি না আপনার সেই নির্দিষ্ট প্রয়োজন (কমান্ডকে ওভাররাইড করা বা বিভিন্ন পোর্টে কেবল একটি ধারক চালানো) না হয়, docker-compose up(এমনকি একটি ধারক হিসাবেও) যথেষ্ট।

আপনি কেন বা কখন বন্দরগুলি তৈরি করতে চান না তা ব্যাখ্যা করতে সহায়তা করতে পারেন? সে কারণেই বা যখন তারা ইতিমধ্যে উন্মুক্ত বন্দরগুলির সাথে বিরোধ করতে পারে

কেবল কারণ docker-compose runআপনার পরিষেবাগুলির জন্য ওয়ান-অফ কমান্ড চালানোর জন্য তৈরি।
এর অর্থ হ'ল, যদি আপনি ইতিমধ্যে একটি করে থাকেন তবে আপনার docker-compose upসমস্ত ধারক ইতিমধ্যে তাদের নির্দিষ্ট পোর্টগুলিতে চলছে docker-compose.yml। এই পর্যায়ে
একটি docker-compose runকরা (এক-অফ কমান্ড কার্যকর করতে), যদি এটি একই বন্দরটির প্রতি শ্রদ্ধা জানায় তবে তা অবিলম্বে ব্যর্থ হবে। সুতরাং এই বন্দরগুলির ডিফল্ট অ-নির্মাণ creation


আর একটি ব্যবহারের কেস ( রচনা পরিবেশের পরিবর্তনশীল রেফারেন্সে ):

কোন পরিবেশে পরিবেশের ভেরিয়েবলগুলি উপলব্ধ তা দেখতে রান করুন docker-compose run SERVICE env


এই আদেশগুলির সর্বাধিক সাম্প্রতিক (2019+) সংস্করণ চালু রয়েছে docker/docker.github.io:


27

আমি উল্লেখ করতে চাই যে আপনি যদি পিডিবি ডিবাগারের সাথে পাইথন ব্যবহার করেন:

import pdb; pdb.set_trace()

আপনি যদি স্ক্রিপ্টটি ব্যবহার করে এটি চালিয়ে যান তবে এটি শেলের সাথে নামবে না:

docker-compose up

তবে আপনি যদি রান ব্যবহার করেন তবে এটি প্রত্যাশার মতো ডিবাগারে নেমে যাবে:

docker-compose run

7

ডকার ডক্স থেকে একটি উত্তর আছে ।

সাধারণত, আপনি চান docker-compose up। একটিতে upসংজ্ঞায়িত সমস্ত পরিষেবা শুরু বা পুনরায় চালু করতে ব্যবহার করুন docker-compose.yml। ডিফল্ট "সংযুক্ত" মোডে, আপনি সমস্ত ধারক থেকে সমস্ত লগ দেখতে পাবেন। "বিচ্ছিন্ন" মোডে (-d ), রচনাগুলি পাতাগুলি শুরু করার পরে প্রস্থান করে, তবে পাত্রে পটভূমিতে চলতে থাকে।

docker-compose runকমান্ড "ওয়ান বন্ধ" অথবা "এডহক" কর্ম চলমান জন্য। এটির জন্য আপনি যে পরিষেবাটি চালাতে চান সেটির নাম প্রয়োজন এবং চলমান পরিষেবা নির্ভর করে এমন পরিষেবাগুলির জন্য কেবল পাত্রে শুরু হয়। run পরীক্ষা চালাতে বা কোনও প্রশাসনিক টাস্ক সম্পাদন করতে ব্যবহার করুন যেমন ডেটা ভলিউম ধারকটিতে ডেটা অপসারণ বা যুক্ত করা। runকমান্ড মত কাজ করে docker run -tiএটি ধারক একটি ইন্টারেক্টিভ টার্মিনাল খোলেন এবং কন্টেইনারে প্রক্রিয়ার প্রস্থান অবস্থা মিলে একটি প্রস্থান অবস্থা ফেরৎ।


1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। মূলত, docker-compose runচলমান পরিষেবার বিরুদ্ধে কমান্ডগুলি কার্যকর করতে এবং docker-compose upএকটি নতুন পরিষেবা উত্সাহিত করতে ব্যবহার করুন।
গুন্ডেরিফাই করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.