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


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.