ডকার-কমপোজ.আইএমএল-এ কীভাবে ডকার পাত্রটি পুনর্নির্মাণ করবেন?


218

পরিষেবাগুলির সুযোগ রয়েছে যা ডকার-কমপোজ.আইএমএল-এ সংজ্ঞায়িত হয়েছে। এই পরিষেবা শুরু করা হয়েছে। আমার এইগুলির মধ্যে একটির পুনর্নির্মাণ এবং অন্যান্য পরিষেবাদি ব্যতীত এটি শুরু করা দরকার। আমি নিম্নলিখিত কমান্ডগুলি চালাচ্ছি:

docker-compose up -d # run all services
docker-compose stop nginx # stop only one. but it still running !!!
docker-compose build --no-cache nginx 
docker-compose up -d --no-deps # link nginx to other services

শেষে আমি পুরানো nginx ধারক পেয়েছিলাম। যাইহোক ডকার-কমপোজ সমস্ত চলমান পাত্রে মারা যায় না!


4
docker-compose up --build
জিন্না বালু

উত্তর:


233

ডকার-রচনা আপ

$docker-compose up -d --no-deps --build <service_name>

--no-Deps - সংযুক্ত পরিষেবাগুলি শুরু করবেন না।

- বিল্ড - পাত্রে শুরু করার আগে চিত্রগুলি তৈরি করুন।


19
docker-compose build service1 service2 --no-cache এই কাজটি আরও ভাল করে ( github.com/docker/compose/issues/1049 )। আমি ক্যাশেড পাত্রে ইস্যু করেছিলাম যা ব্যবহারের আগে তৈরি হয়েছিল docker-compose up -d --no-deps --build <service_name>

33
@evgpisarchik আদেশগুলি খানিকটা বাইরে বেরোন, এটি হওয়া উচিতdocker-compose build --no-cache service1 service2
ম্যাথু উইলকক্সসন

180

ডকার-রচনা 1.19 সহ up

docker-compose up --build --force-recreate --no-deps [-d] [<service_name>..]

এক বা একাধিক service_nameযুক্তি ছাড়াই সমস্ত পাত্রে পুনর্নির্মাণ করা হবে

সহায়তা মেনু থেকে

Options:
    -d, --detach        Detached mode: Run containers in the background,
                        print new container names. Incompatible with
                        --abort-on-container-exit.
    --no-deps           Don't start linked services.
    --force-recreate    Recreate containers even if their configuration
                        and image haven't changed.
    --build             Build images before starting containers.

4
আমি বিভ্রান্ত হয়ে পড়েছি কীভাবে এটি প্রশ্নের উত্তর দেয়। আমরা কীভাবে কেবল একটি পাত্রে পুনর্নির্মাণ করব?
ডানকান জোন্স

11
কমান্ডের শেষে এটির নাম যুক্ত করে আপনি কেবল একটি ধারক পুনর্নির্মাণ করতে পারেন। docker-compose up -d --force-recreate --build container_name
হারলেম স্কুইরেল

এক সেকেন্ড, এই অপেক্ষা করুন পুনরায় তৈরি ধারক , এটা সমমানের নয় build --no-cache, বিকল্প যদি না কমান্ড বিবরণ সম্পূর্ণরূপে ভুল
Slav

67

এটি আপনার সমস্যার সমাধান করা উচিত:

docker-compose ps # lists all services (id, name)
docker-compose stop <id/name> #this will stop only the selected container
docker-compose rm <id/name> # this will remove the docker container permanently 
docker-compose up # builds/rebuilds all not already built container 

12
যদি আপনি stopএবং rmসমস্ত ধারক করতে চান তবে আপনি কমান্ডটি ব্যবহার করতে পারেন docker-compose down। আপনি কেবল কিছু থেকে মুক্তি পেতে চাইলে আপনার সমাধানটি আরও ভাল।
হিরোওয়াতারী

এই সমাধান সেটআপ যেখানে আপনি সমগ্র Docker আবেদন এবং পরিষেবার শুধু পুনঃ এক বন্ধ করতে চাই না একটি ভাল ফিট
bluesummers

আমি আসলে চালানোর জন্য প্রয়োজন docker-compose build <id/name>আগে upপরিবর্তিত Dockerfile পুনর্নির্মাণের।
ভজ্ক হার্মেকজ

49

@ হারলেম স্কুইরেল পোস্ট করার সাথে সাথে এটি সেরা এবং আমি সঠিক সমাধানটি মনে করি।

তবে, ওপি নির্দিষ্ট সমস্যার উত্তর দিতে, এটি নিম্নলিখিত কমান্ডের মতো হওয়া উচিত, কারণ তিনি docker-compose.ymlফাইলটিতে সমস্ত পরিষেবা পুনরায় তৈরি করতে চান না , তবে কেবল nginxএকটি:

docker-compose up -d --force-recreate --no-deps --build nginx

বিকল্প বর্ণনা:

Options:
  -d                  Detached mode: Run containers in the background,
                      print new container names. Incompatible with
                      --abort-on-container-exit.
  --force-recreate    Recreate containers even if their configuration
                      and image haven't changed.
  --build             Build images before starting containers.
  --no-deps           Don't start linked services.

9

হয়তো এই পদক্ষেপগুলি বেশ সঠিক নয়, তবে আমি এটির মতো করি:

ডকার রচনা বন্ধ করুন: $ docker-compose down

ধারক অপসারণ: $ docker system prune -a

ডকার রচনা শুরু করুন: $ docker-compose up -d


4

সহজভাবে ব্যবহার করুন:

docker-compose build [yml_service_name]

[yml_service_name]আপনার পরিষেবার নামটি docker-compose.ymlফাইলে প্রতিস্থাপন করুন। docker-compose restartপরিবর্তনগুলি প্রভাবিত হয়েছে তা নিশ্চিত করতে আপনি ব্যবহার করতে পারেন । আপনি --no-cacheক্যাশে উপেক্ষা করতে ব্যবহার করতে পারেন।


2

সমস্যা হল:

$ docker-compose stop nginx

কাজ করেনি (আপনি বলেছিলেন এটি এখনও চলছে) আপনি যদি যাইহোক এটি পুনর্নির্মাণ করতে চলেছেন তবে আপনি এটি হত্যার চেষ্টা করতে পারেন:

$ docker-compose kill nginx

যদি এটি এখনও কাজ না করে তবে ডকারের সাহায্যে সরাসরি এটি বন্ধ করার চেষ্টা করুন:

$ docker stop nginx

বা এটি মুছুন

$ docker rm -f nginx

যদি এটি এখনও কাজ না করে, আপনার ডকারের সংস্করণটি পরীক্ষা করুন, আপনি আপগ্রেড করতে চাইতে পারেন।

এটি একটি বাগ হতে পারে, আপনি আপনার সিস্টেম / সংস্করণটির সাথে মেলে কিনা তা পরীক্ষা করে দেখতে পারেন। উদাহরণস্বরূপ, এখানে একটি দম্পতি রয়েছে: https://github.com/docker/docker/issues/10589

https://github.com/docker/docker/issues/12738

কর্মপরিকল্পনা হিসাবে, আপনি প্রক্রিয়াটি মারার চেষ্টা করতে পারেন।

$ ps aux | grep docker 
$ kill 225654 # example process id

1

আমার জন্য এটি উভয় --no-cacheএবং --pull(যেটির জন্য উপলব্ধ) এর সাথে ডকার হাব থেকে কেবলমাত্র নতুন নির্ভরতা এনেছে docker-compose build

# other steps before rebuild
docker-compose build --no-cache --pull nginx # rebuild nginx
# other steps after rebuild, e.g. up (see other answers)

0
docker-compose stop nginx # stop if running
docker-compose rm -f nginx # remove without confirmation
docker-compose build nginx # build
docker-compose up -d nginx # create and start in background

আরএম দিয়ে পাত্রে অপসারণ জরুরি। অপসারণ ছাড়াই, ডকার পুরানো ধারক শুরু করবে।


-9

কেবল:

$ docker-compose restart [yml_service_name]

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