ডকার রচনা দিয়ে কোনও ধারকটিতে ফাইলগুলি অনুলিপি করা হচ্ছে


94

আমার একটি রয়েছে Dockerfileযেখানে আমি একটি বিদ্যমান ডিরেক্টরি (সামগ্রী সহ) কন্টেইনারে অনুলিপি করে যা ভাল কাজ করে:

ডকফেরফাইল

FROM php:7.0-apache
COPY Frontend/ /var/www/html/aw3somevideo/
COPY Frontend/ /var/www/html/

RUN ls -al /var/www/html
RUN chown -R www-data:www-data /var/www/html 
RUN chmod -R 755 /var/www/html 

ডকার এক্সেক সহ ডিরেক্টরি তালিকার স্ক্রিনশট shot

আমি যখন docker-compose.ymlফাইল ব্যবহার করি তখন কেবল ডিরেক্টরি থাকে aw3somevideoএবং ভিতরে aw3somevideoকিছুই থাকে না।

ডকার-কমপোজ.আইএমএল :

 php:
    build: php/
    volumes:
      - ./Frontend/ :/var/www/html/
      - ./Frontend/index.php :/var/www/html/
    ports:
      - 8100:80

খালি ডিরেক্টরি তালিকার স্ক্রিনশট

হয়তো আমি এর কার্যকারিতা বুঝতে পারি না volumesএবং যদি এটি হয় তবে দয়া করে আমাকে বলুন কীভাবে আমার বিদ্যমান ফাইলগুলি কোনও docker-compose.ymlফাইলের মাধ্যমে ধারকটিতে অনুলিপি করতে হয় ।


4
volumes:আপনার ডকার-রচনা ফাইল থেকে আপনার বিভাগটি সরান । আপনার ছবিতে ইতিমধ্যে ডেটা রয়েছে। ভলিউম: বিভাগটি কেবল ডেটা ওভাররাইট করে। বর্তমান ডকার-রচনা বিন্যাস (সংস্করণ 2) এ সরান।
বার্নার্ড

@ অ্যালকালাইন থেক্স যে আসলেই সমস্যা ছিল। কিন্তু কেন খণ্ডগুলি পুরো ডিরেক্টরিটি অনুলিপি করল না?
TheDoctor

আমি উত্তর হিসাবে জবাব দেব যাতে আপনি এই সমস্যাটি বন্ধ করেন।
বার্নার্ড

উত্তর:


80

দেওয়া হয়েছে

    volumes:
      - /dir/on/host:/var/www/html

যদি /dir/on/hostউপস্থিত না থাকে তবে এটি হোস্টে তৈরি করা হয় এবং খালি সামগ্রীটি কনটেইনারটিতে মাউন্ট করা হয় /var/www/html। ধারকটির /var/www/htmlভিতরে আপনার আগে যা কিছু সামগ্রী ছিল তা অ্যাক্সেসযোগ্য, যতক্ষণ না আপনি ভলিউমটি আনমাউন্ট করে; নতুন মাউন্টটি পুরানো সামগ্রীটি গোপন করছে।


এটি কি সম্ভব, সাম্প্রতিক ডকার সংস্করণগুলির সাথে থাকা সামগ্রীর সামগ্রীটি var/www/html/অনুলিপি থাকা অবস্থায়ও আর অনুলিপি করা হয়নি /dir/on/host? প্রথমবার কোনও কন্টেইনারটি চালু করার সময় হোকারের কাছে ডকার-ধারক থেকে ডেটা জোর করে অনুলিপি করার কোনও উপায় আছে কি?
তারাটার

4
@ তারেটর হ্যাঁ, ডান হাতটি আর হোস্টের কাছে অনুলিপি করা হয়নি। আমি উত্তর আপডেট করব। ধারক শুরুর অনুলিপি করার উপায় হিসাবে, আপনি স্টার্টআপ কমান্ডকে এই জাতীয় কিছু দিয়ে ওভাররাইড করতে পারেন docker run -v /dir/on/host:/hostdir php sh -c "cp -rp /var/www/html/* /hostdir && exec myapp"execচূড়ান্ত কমান্ডটি চালু করতে ব্যবহার করতে ভুলবেন না যাতে এটি পিআইডি 1 নির্ধারিত হয়। এটি নিশ্চিত করবে যে মাইয়া্যাপ সমাপ্তি সংকেত পেয়েছে (উদাহরণস্বরূপ Ctrl-C)।
বার্নার্ড

হাই, আমি এছাড়াও Docker-রচনা সঙ্গে একই জিনিস চেষ্টা করছি কিন্তু একটি ত্রুটি পেয়ে, আপনি কি দয়া করে এটা কটাক্ষপাত ... পেতে পারি stackoverflow.com/questions/45573831/...
utkarsh31

আরে, বার্নার্ড, আপনার উত্তরে আপনি " ডান হাতটি মাইভলিউমের মতো নামযুক্ত ভলিউম বা হোস্টের কোনও পাথ নির্দিষ্ট করে কিনা " উল্লেখ করে । আপনি কি সেখানে "বাম হাত" বলতে চাইছেন না, যেহেতু সেখানেই কেউ একটি ভলিউম বা হোস্ট পাথ নির্ধারণ করে, যা আরএইচএসের ধারক অবস্থানে ম্যাপ করা হয়? আমি বুঝতে পারি যে আপনি কীভাবে ডকার বাম এবং ডান মধ্যে ফাইল অনুলিপি পরিচালনা করতে পারেন এবং কীভাবে এটি পরিবর্তন হয়েছে changed
চার্লি আরহার্ট

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