How to copy folders to docker image from Dockerfile?

后端 未结 10 832
走了就别回头了
走了就别回头了 2021-01-31 01:41

I tried the following command in my Dockerfile: COPY * / and got mighty surprised at the result. Seems the naive docker code traverses the directories from the glob

10条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-31 02:18

    I don't completely understand the case of the original poster but I can proof that it's possible to copy directory structure using COPY in Dockerfile.

    Suppose you have this folder structure:

    folder1
      file1.html
      file2.html
    folder2
      file3.html
      file4.html
      subfolder
        file5.html
        file6.html
    

    To copy it to the destination image you can use such a Dockerfile content:

    FROM nginx
    
    COPY ./folder1/ /usr/share/nginx/html/folder1/
    COPY ./folder2/ /usr/share/nginx/html/folder2/
    
    RUN ls -laR /usr/share/nginx/html/*
    

    The output of docker build . as follows:

    $ docker build --no-cache .
    Sending build context to Docker daemon  9.728kB
    Step 1/4 : FROM nginx
     ---> 7042885a156a
    Step 2/4 : COPY ./folder1/ /usr/share/nginx/html/folder1/
     ---> 6388fd58798b
    Step 3/4 : COPY ./folder2/ /usr/share/nginx/html/folder2/
     ---> fb6c6eacf41e
    Step 4/4 : RUN ls -laR /usr/share/nginx/html/*
     ---> Running in face3cbc0031
    -rw-r--r-- 1 root root  494 Dec 25 09:56 /usr/share/nginx/html/50x.html
    -rw-r--r-- 1 root root  612 Dec 25 09:56 /usr/share/nginx/html/index.html
    
    /usr/share/nginx/html/folder1:
    total 16
    drwxr-xr-x 2 root root 4096 Jan 16 10:43 .
    drwxr-xr-x 1 root root 4096 Jan 16 10:43 ..
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file1.html
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file2.html
    
    /usr/share/nginx/html/folder2:
    total 20
    drwxr-xr-x 3 root root 4096 Jan 16 10:43 .
    drwxr-xr-x 1 root root 4096 Jan 16 10:43 ..
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file3.html
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file4.html
    drwxr-xr-x 2 root root 4096 Jan 16 10:33 subfolder
    
    /usr/share/nginx/html/folder2/subfolder:
    total 16
    drwxr-xr-x 2 root root 4096 Jan 16 10:33 .
    drwxr-xr-x 3 root root 4096 Jan 16 10:43 ..
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file5.html
    -rwxr-xr-x 1 root root    7 Jan 16 10:32 file6.html
    Removing intermediate container face3cbc0031
     ---> 0e0062afab76
    Successfully built 0e0062afab76
    

提交回复
热议问题