ADD কমান্ডটি ব্যবহার করে ডকারে অন্য ডিরেক্টরিতে ডিরেক্টরিটি অনুলিপি করুন


382

আমি http://docs.docker.com/engine/references/builder/#add পড়েছি তবে আমি একটি সমস্যার মুখোমুখি হয়েছি। আমি স্থানীয় ডিরেক্টরিটি goডকারে অনুলিপি করতে চাই/user/local/

আমি চেষ্টা করেছিলাম:

ADD go /usr/local/

এবং:

ADD /go/ /usr/local/ 

এছাড়াও:

RUN chmod 0755 /usr/local/go/src/make.bash

তবে, আমি নীচের ত্রুটি বার্তাটি দেখতে পাচ্ছি /usr/local/go/src/make.bash: No such file or directoryতবে স্থানীয় goডিরেক্টরিতে এটি রয়েছে make.bash

উত্তর:


704
ADD go /usr/local/

আপনার স্থানীয় ডিরেক্টরি বিষয়বস্তু কপি করবেgo/usr/local/আপনার ডকার চিত্রের ডিরেক্টরিতে ।

goডিরেক্টরিটি নিজেই অনুলিপি /usr/local/করতে:

ADD go /usr/local/go

অথবা

COPY go /usr/local/go

43
আমি ADD এর একাধিক উত্স সংস্করণটি ব্যবহার করার চেষ্টা করছি এবং তাই আমি গন্তব্যটির জন্য লক্ষ্য ডিরেক্টরি নাম নির্দিষ্ট করতে পারি না। মাল্টি-সিআরসি ফর্ম্যাটে (যেমন ADDপ্রতিটি উত্স ডিরেক্টরিতে স্তর তৈরি না করে) ওপি যা বলেছিল তা করার কোনও উপায় আছে কি ?
গাস

9
আমি কেবল এই বলে একটি সিডনোট যুক্ত করতে চাই যে $HOMEবা ~বা অন্য কোনও শেল ভেরিয়েবল কাজ করবে না। আমি এটি বলছি কারণ আমি স্বীকার করতে চাই তার চেয়ে আমি এটির চেয়ে ভাল পরিমাণ ব্যয় করেছি যদিও এটি বেশিরভাগের কাছেই সুস্পষ্ট obvious
shriek

34
কপি গো / ইউএসআর / লোকাল / গো আমার পক্ষে কাজ করে না। কপি করে না।
Tyguy7

78
এটি সত্যিই বেশ বিভ্রান্তিকর বিষয়। COPYসহজভাবে কেন আচরণ করতে পারে না cp? পরিবর্তে এটি কীভাবে কাজ করে সেখানে অতিরিক্ত পুলিশ হওয়া দরকার।
জেলফির কালটসটাহল

14
.dockerignore ফাইল কোনও ডিরেক্টরি লুকিয়ে রাখতে পারে এবং কপি বা ADD তালিকাভুক্ত আইটেমগুলির জন্য কাজ করবে না
Vereb

49

প্রকৃতপক্ষে ADD go /usr/local/যোগ হবে বিষয়বস্তু এর goফোল্ডার এবং না ফোল্ডারের নিজেই, আপনি Thomasleveil সমাধান ব্যবহার করতে পারেন অথবা যদি যে কোনো কারণে কাজ না করে আপনি পরিবর্তন করতে পারেন WORKDIRথেকে /usr/local/তারপর মত এটি আপনার ডিরেক্টরির যোগ করুন:

WORKDIR /usr/local/
COPY go go/

অথবা

WORKDIR /usr/local/go
COPY go ./

তবে আপনি যদি একাধিক ফোল্ডার যুক্ত করতে চান তবে এগুলি যুক্ত করতে বিরক্তিকর হবে, আপাতত আমার একমাত্র সমাধান হিসাবে এটি আমার বর্তমান সমস্যা থেকে দেখছি এটি COPY . .সমস্ত অযাচিত ডিরেক্টরি এবং ফাইলগুলি বাদ দিচ্ছে এবং .dockerignoreআসুন আমি বলি যে আমি ফোল্ডার এবং ফাইল পেয়েছি :

- src 
- tmp 
- dist 
- assets 
- go 
- justforfun 
- node_modules 
- scripts 
- .dockerignore 
- Dockerfile 
- headache.lock 
- package.json 

এবং আমি যুক্ত করতে চাই src assets package.json justforfun go :

ডকফাইফিলে:

FROM galaxy:latest

WORKDIR /usr/local/
COPY . .

.dockerignore ফাইলটিতে:

node_modules
headache.lock
tmp
dist

বা আরও মজাদার জন্য (বা আপনি আরও বেশি লোককে বিভ্রান্ত করতে চান তাদের পাশাপাশি ক্ষতিগ্রস্থ করে তুলুন: পি) হতে পারে:

*
!src 
!assets 
!go 
!justforfun 
!scripts 
!package.json 

এইভাবে আপনি সমস্ত কিছু উপেক্ষা করুন, তবে যা আপনি অনুলিপি করতে চান তা বাদ দিয়ে বা কেবল "অগ্রাহ্য তালিকা" থেকে যোগ করুন।

এটি দেরি করে দেওয়া উত্তর তবে একই সাথে আরও কিছু ক্ষেত্রে কভার করার আরও উপায় যুক্ত করা।


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