2015-07-26 7 views
11

मैं बिल्डिंग संदर्भ की जड़ से एक एकल फ़ाइल को एक डॉकर छवि में नव निर्मित निर्देशिका में कॉपी करने का प्रयास कर रहा हूं।डॉकर की कॉपी/एडीडी निर्देशों का उपयोग कैसे करें एक फ़ाइल को एक छवि में कॉपी करने के लिए

FROM debian:latest 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY test.txt /usr/src/app 

test.txt फ़ाइल एक सरल ASCII पाठ फ़ाइल इस प्रकार है::

$ cat test.txt 
This is a test 

लेकिन जब मैं इस छवि मैं का निर्माण, इस प्रकार

Dockerfile है कि मैं का उपयोग कर रहा है एक छवि प्राप्त करें जिसमें कहा गया है कि गंतव्य पथ निर्देशिका नहीं है।

$ docker build . 
Sending build context to Docker daemon 4.608 kB 
Sending build context to Docker daemon 
Step 0 : FROM debian:latest 
---> 9a61b6b1315e 
Step 1 : RUN mkdir -p /usr/src/app 
---> Using cache 
---> 86bd44a8776e 
Step 2 : WORKDIR /usr/src/app 
---> Using cache 
---> ed6771adc681 
Step 3 : ADD test.txt /usr/src/app 
stat /var/lib/docker/devicemapper/mnt/ee5b9b7029f2adf27d332cbb0d98d6ad9927629a7569fd2d9574cb767b23547b/rootfs/usr/src/app/test.txt: not a directory 

मैंने डॉकर संस्करणों, आधार छवियों और डॉकर के साथ वितरण के कई संयोजनों का उपयोग करने का प्रयास किया है। मैंने सीओपीवाई के बजाय एडीडी का उपयोग करने का भी प्रयास किया है लेकिन परिणाम वही है।

मैं वर्तमान में निम्नलिखित डोकर संस्करण स्थापित साथ CentOS 7 पर इस कोशिश कर रहा हूँ:

Client version: 1.7.1 
Client API version: 1.19 
Go version (client): go1.4.2 
Git commit (client): 786b29d 
OS/Arch (client): linux/amd64 
Server version: 1.7.1 
Server API version: 1.19 
Go version (server): go1.4.2 
Git commit (server): 786b29d 
OS/Arch (server): linux/amd64 

क्या मैं देखा है कि मैं एक निर्देशिका फ़ाइल कॉपी कर सकते हैं, लेकिन नहीं है। उदाहरण के लिए, अगर मैं निर्माण संदर्भ जड़ में एक "परीक्षण" निर्देशिका बनाने और परीक्षण निर्देशिका के अंदर test.txt डाल तो मैं निर्देशिका सफलतापूर्वक कॉपी कर सकते हैं:

FROM debian:latest 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY test /usr/src/app 

ध्यान दें कि Dockerfile ऊपर में मैं पूरी कॉपी ./test.txt की बजाय ./test निर्देशिका। यह सफलतापूर्वक निर्माण।

Docker documentation कॉपी अनुदेश जो मुझे क्या करना है कोशिश कर रहा हूँ के समान है के लिए निम्नलिखित नमूना उपयोग के मामले होते हैं:

COPY hom?.txt /mydir/ 

किसी को भी बाहर बिंदु सकता है मैं गलत क्या कर रहा हूँ? मैं एक फ़ाइल की प्रतिलिपि बनाने के बारे में कैसे जा सकता हूं?

उत्तर

14

As stated in the Dockerfile documentation:

  • हैं <src> फ़ाइल के किसी भी अन्य प्रकार है, यह अपने मेटाडाटा के साथ व्यक्तिगत रूप से कॉपी किया जाता है। इस मामले में, यदि <dest> एक पिछला स्लैश / के साथ समाप्त होता है, तो इसे एक निर्देशिका माना जाएगा और <src> की सामग्री <dest>/base(<src>) पर लिखी जाएगी।

  • तो <dest> स्लैश साथ अंत नहीं है, यह एक नियमित रूप से फ़ाइल पर विचार किया जाएगा और <src> की सामग्री <dest> पर लिखा जाएगा।

इस प्रकार, आप एक अनुगामी / साथ COPY test.txt /usr/src/app/ लिखने के लिए की है।

+0

धन्यवाद jwodder, सीधे काम किया। –

संबंधित मुद्दे

 संबंधित मुद्दे